У меня есть плагин обзора, который переопределяет форму комментария в определенном типе сообщения. Сейчас пытаюсь разделить отзывы и комментарии.
Мой первый шаг - удалить фильтр, изменяющий текущий шаблон комментария, и использовать этот фильтр во второй форме комментария.
Плагин использует этот код (упрощенный)
final class DM_Reviews {
public function hooks() {
do_action_ref_array( 'dm_reviews_before_setup_actions', array( &$this ) );
add_filter( 'comment_form_defaults', array( $this, 'reviews_form' ) );
do_action_ref_array( 'dm_reviews_after_setup_actions', array( &$this ) );
}
public function review_form( $args ) {
$form = 'plugin code to modify form';
return wp_parse_args( $form, $args );
}
}
В файле function.php моей дочерней темы я попытался использовать это, но это не сработало.
global $DM_Reviews;
remove_filter( 'comment_form_defaults', array($DM_Reviews, 'reviews_form'),1 );
Если кто-то может направить меня в правильном направлении, как решить эту проблему, это мне очень поможет.
3 ответа
Я думаю, вы можете достичь этой цели, используя одно из следующих решений в зависимости от того, как этот плагин создает экземпляр класса:
if( class_exists('DM_Reviews' ) ){
//This should work in whatever case, not tested
remove_filter('comment_form_defaults', array( 'DM_Reviews', 'reviews_form'));
//or Instantiating a new instance, not tested
remove_filter('comment_form_defaults', array( new DM_Reviews(), 'reviews_form'));
//or Targeting the specific instance, not tested
remove_filter('comment_form_defaults', array( DM_Reviews::get_instance(), 'reviews_form'));
}
Надеюсь, это поможет, дайте мне знать, если вы застрянете.
Попробуй это :
$instance = DM_Reviews::this();
remove_filter('comment_form_defaults', array( $instance, 'reviews_form'));
Для меня remove_filter не работал с function.php, я хотел удалить конкретное поведение плагина, поэтому я сделал:
add_action( 'init', 'remove_filters' );
function remove_filters(){
global $wp_filter;
unset( $wp_filter["_filter_name"]);
}
Похожие вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.