Поддержка Проблемы и решения Помогите изменить приоритет add_filter

  • Решено zusicks

    (@zusicks)


    Скачал плагин социальных кнопок для WordPress. Меня не устраивает, что кнопки встают ниже, чем блок с информацией другого плагина. Обычно это успешно исправляется с помощью remove_filter и add_filter с другим приоритетом в functions.php.

    Итак, кнопки. В недрах плагина нашёл вот это:

    function A2A_SHARE_SAVE_pre_get_posts( $query ) {
    if ( $query->is_main_query() ) {
    add_filter( 'the_content', 'A2A_SHARE_SAVE_add_to_content', 98 );
    add_filter( 'the_excerpt', 'A2A_SHARE_SAVE_add_to_content', 98 );
    }
    }
    
    add_action( 'pre_get_posts', 'A2A_SHARE_SAVE_pre_get_posts' ); // скажу сразу, я не знаю, что это такое и как это влияет на поведение плагина 

    Окей. Пробую добавить в functions.php:
    remove_filter( 'the_content', 'A2A_SHARE_SAVE_add_to_content', 98 );
    Не работает, кнопки по-прежнему выводятся. Пробую не указывать приоритет — всё равно выводятся. Попробовал закомментировать add_filter в файле плагина — перестают выводиться, значит фильтр верный.

    Получается, что фильтр срабатывает уже после functions.php или что? Как мне тогда поступить, не редактируя файлы плагина?

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Получается, что фильтр срабатывает уже после functions.php или что?

    Именно так. Плагин добавляет свой фильтр в привязке к pre_get_posts, поэтому и менять приоритет нужно тоже не раньше этого действия.

    Попробуйте так:

    
    function replace_A2A_SHARE_SAVE_pre_get_posts( $query ) {
    	if ( $query->is_main_query() ) {
    		remove_filter( 'the_content', 'A2A_SHARE_SAVE_add_to_content', 98 );
    		remove_filter( 'the_excerpt', 'A2A_SHARE_SAVE_add_to_content', 98 );
    		add_filter( 'the_content', 'A2A_SHARE_SAVE_add_to_content', 10 );
    		add_filter( 'the_excerpt', 'A2A_SHARE_SAVE_add_to_content', 10 );
    	}
    }
    add_action( 'pre_get_posts', 'replace_A2A_SHARE_SAVE_pre_get_posts', 11 ); 
    

    Классное решение. Всё работает отлично, спасибо.

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Тема «Помогите изменить приоритет add_filter» закрыта для новых ответов.