Поддержка Проблемы и решения как добавить фильтр posts_results только для главного цикла

  • Решено Yuriy Stepanov

    (@stur)


    вообщем необходимо подключить фильтр
    posts_results но только для основного цикла
    напомню если например в сайдбаре добавлен виджет последние записи то фильтр опять запустится на исполнение

    можно было бы как вариант в самом фильтре запустить remove_filter чтобы удалить самоё себя
    но тогда главный цикл должен обязательно запускаться первым, к сожалению для некоторых тем это не приемлемо — часто перед основной выборкой запускаются всякие крутилки горячих новостей и тому подобное

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

    (@sergeybiryukov)

    Live and Learn

    Это нужно для плагина?

    да для плагина

    а я уже ее решил примерчиг :

    <?php
    ads_addImgMeta($posts){
       global  $wp_query;
       // сравниваем 2 массива  $posts  и из глобального объекта $wp_query->posts
       //  должны быть полностью идентичны
       foreach ($posts as $key=>$value) {
            if( $wp_query->posts[$key] !== $value ){
                return  $posts;
            }
       }
       if( is_admin() or is_page() ){
           remove_filter('posts_results', 'ads_addImgMeta');
       }
       \\ ...
       \\  обрабатываем массив $posts
       \\ ...
       //   отключаемся
       remove_filter('posts_results', 'ads_addImgMeta');
       return $posts;
    }
    
    add_filter('posts_results', 'ads_addImgMeta');
    ?>

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