Intereting Posts
MD5 хэш отличается Как проверить, не удалена ли строка в Eloquent? PHP HSV для понимания формулы RGB Как настроить пользовательские заголовки в PHP Ошибка загрузки Google App Engine для PHPExcel kohana 3.2 ORM find_all () с отношениями Ошибка Vagrant up, изменение владельца / vagrant: не каталог Как заставить PHP установить код состояния HTTP на 500 автоматически в случае каких-либо ошибок? (включая те, которые не могут обрабатываться пользователем) Наследование класса в PHP 5.2: переопределение статической переменной в классе расширения? используя Carbon, чтобы узнать, попадает ли время в два пункта или нет Проблема с идентификацией кода Синтаксис PHP для массивов: различное поведение между версиями PHP Проблема в преобразовании строки в ненадежный код (в PHP, используя phlyLabs punycode string converter) PHP XPath, выбрав последний элемент соответствия используйте exec (); в php-скрипте для отправки электронной почты из оболочки

WP_Query не возвращает результатов

Я пытаюсь получить некоторые страницы в wordpress с помощью WP_Query и некоторые аргументы:

 $args = array( 'post_type' => 'posttype', 'posts_per_page' => 24, 'post__in' => $store_ids, 'paged' => $paged, 'post_status' => 'publish', ); $the_query = new WP_Query( $args ); 

Страницы, которые я пытаюсь получить здесь, должны соответствовать идентификатору в массиве идентификаторов, которые я ему дал. Массив и другие аргументы кажутся прекрасными, так как я получаю свои результаты, когда я использую get_posts вместо WP_Query . Что здесь происходит?

    Моя образованная догадка заключается в том, что у вас плохо написанный фильтр где-то в вашей теме, который действует на WP_Query , и это, скорее всего, действие pre_get_posts .

    get_posts использует WP_Query . Единственное различие заключается в том, что WP_Query по умолчанию передает следующие два аргумента WP_Query :

    • 'no_found_rows' => true который «сбой» 'no_found_rows' => true страницы, поэтому вы не можете get_posts страницы get_posts

    • 'suppress_filters' =>true Это важно, что это такое, он не позволяет фильтрам изменять запрос. Таким образом, pre_get_posts и встроенные фильтры posts_* не могут использоваться для изменения get_posts . Вот почему в вашем случае вы получаете сообщения, используя get_posts и ни один из WP_Query не использует WP_Query

    Грязное исправление здесь заключается в том, чтобы добавить 'suppress_filters' => true к вашим аргументам запроса в WP_Query . Правильным решением будет поиск фильтра, изменяющего запрос. Как я уже сказал, скорее всего, pre_get_posts где вы не использовали is_main_query() чтобы просто настроить основной запрос

    Используйте wp_reset_query() после строки WP_Query .