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

Я использую wp_query для создания пользовательского запроса, который получает результаты поиска, но он возвращает 0 результатов. Вот код:

$query = 's=the&posts_per_page=5&paged=1';
$custom_query = new WP_Query();
$custom_query->query($query);

if( $custom_query->have_posts() ) {
        while ( $custom_query->have_posts() ) : $custom_query->the_post();
                    $this->get_article();
        endwhile;
}
else
        $this->posts_404();

Когда я ищу слово через поле поиска на UI, это возвращает 37 хитов, но поиск слова с моим пользовательским запросом возвращается 0. Так, я подозреваю, что должна быть проблема с моим запросом.

Результат: из print_r($Custom_query):

WP_Query Object ( 
 [query_vars] => Array 
  ( [s] => the 
    [posts_per_page] => 5 
    [paged] => 1 
    [error] => 
    [m] => 0 
    [p] => 0 
    [post_parent] => 
    [subpost] => 
    [subpost_id] => 
    [attachment] => 
    [attachment_id] => 0 
    [name] => 
    [static] => 
    [pagename] => 
    [page_id] => 0 
    [second] => [minute] => [hour] => [day] => 0 [monthnum] => 0 [year] => 0 
    [w] => 0 
    [category_name] => [tag] => [cat] => [tag_id] => [author_name] => [feed] => [tb] => [comments_popup] => [meta_key] => [meta_value] => [preview] => [sentence] => [fields] => 
    [category__in] => Array ( ) 
    [category__not_in] => Array ( ) 
    [category__and] => Array ( ) [post__in] => Array ( ) [post__not_in] => Array ( ) [tag__in] => Array ( ) [tag__not_in] => Array ( ) [tag__and] => Array ( ) [tag_slug__in] => Array ( ) [tag_slug__and] => Array ( ) 
[ignore_sticky_posts] => [suppress_filters] => 
[cache_results] => 1 
[update_post_term_cache] => 1
[update_post_meta_cache] => 1 
[post_type] => any [nopaging] => 
[comments_per_page] => 50 [no_found_rows] => 
[search_terms] => Array ( [0] => the ) [order] => DESC ) 
[tax_query] => WP_Tax_Query Object ( [queries] => Array ( ) [relation] => AND )    
[meta_query] => WP_Meta_Query Object ( [queries] => Array ( ) [relation] => )    
[post_count] => 0 
[current_post] => -1 
[in_the_loop] => 
[comment_count] => 0 
[current_comment] => -1 
[found_posts] => 0 
[max_num_pages] => 0 
[max_num_comment_pages] => 0 
[is_single] => [is_preview] => [is_page] => [is_archive] => [is_date] => [is_year] => [is_month] => [is_day] => [is_time] => [is_author] => [is_category] => [is_tag] => [is_tax] => 
[is_search] => 1 
[is_feed] => [is_comment_feed] => [is_trackback] => [is_home] => [is_404] => [is_comments_popup] => [is_paged] => [is_admin] => [is_attachment] => [is_singular] => [is_robots] => [is_posts_page] => [is_post_type_archive] => 
[query_vars_hash] => 16a0222409543c8384496148e5b60565 
[query_vars_changed] => [thumbnails_cached] => 
[query] => Array ( [s] => the [posts_per_page] => 5 [paged] => 1 ) [request] => SELECT * FROM wp_posts WHERE 1=2 [posts] => Array ( ) ) 
1
22.11.2012, 17:29
5 ответов

Попытайтесь добавить &post_type=any к своему запросу

$query = 's=the&posts_per_page=5&paged=1&post_type=any';
0
19.02.2020, 22:48
  • 1
    Просто попробованный это, но тот же результат я боюсь. –  littledynamo 22.11.2012, 17:33

Ваш код работает на меня, и поскольку у Вас есть он записанный и в нескольких кратких версиях (New WP_Query($query) и New Wp_Query('s=the')), который имеет смысл. Это должно быть эквивалентным. Должно быть что-то в плагине или Вашей теме, которая вызывает это. Ищите код, который управляет WP_Query- posts_where, posts_clauses, pre_get_posts, и т.д. Я не думаю, что это - действительно проблема WP_Query.

0
19.02.2020, 22:48

Попробуйте это и затем добавьте Ваш Цикл -

$args = array(
    's' => 'the',
    'posts_per_page' => 5,
    'paged' => 1
);
$custom_query = new WP_Query($args);

Необходимо передать аргументы, когда Вы - инициирование Запрос, otherwish Вы просто настраивают пустой запрос и затем используют $custom_query->query($args); только говорит запрос, какие аргументы использовать, он на самом деле не выполняет запрос.

0
19.02.2020, 22:48
  • 1
    Спасибо за ответ, но никакое различие :( –  littledynamo 22.11.2012, 17:35
  • 2
    Хорошо, таким образом, это похоже [request] проблема. Обычно плохой запрос является bacuase плохого запроса Вар, но они в порядке. Это происходит возможно из-за местоположения запроса в Вашем коде - где точно это расположено? –  David Gard 22.11.2012, 17:44

Кажется, что существует плагин или что-то мешание. Попытайтесь добавить suppress_filters=true к своему запросу args, чтобы видеть, фиксирует ли это его. Если работы, проверьте то, что плагин/тема смешивает с Вашим запросом.

0
19.02.2020, 22:48
  • 1
    Возвратов спасибо за ответ. Я пытался добавить suppress_filters=true но это не работало. Это на самом деле проникло пустой в print_r т.е. [query] => Array ( [s] => the [posts_per_page] => 5 [paged] => 1 [post_type] => any [suppress_filters] => ) –  littledynamo 22.11.2012, 18:45
  • 2
    Попробовать suppress_filters=1? –  MZAweb 22.11.2012, 19:41
  • 3
    Тот же результат :( Кажется, что существует что-то еще продолжение. Я собираюсь попробовать query_posts видеть, имеет ли это какое-либо значение. –  littledynamo 22.11.2012, 20:39
  • 4
    Не делайте этого! Попытка :P –  MZAweb 22.11.2012, 21:07
  • 5
    , деактивируя все Ваши плагины и тест. И затем активируйтесь один за другим, пока Вы не найдете преступника. –  MZAweb 22.11.2012, 21:08

Позволяет принимают более хорошую форму того, что Вы как отправили в другом ответе

$args = array(
    's' => 'the',
    'posts_per_page' => 5,
    'paged' => 1
);
$custom_query = new WP_Query($args);

Я настоятельно рекомендую, чтобы Вы использовали WP_Query с массивом аргументов и передали на пути конструктора как это.

Позволяет взгляду на Ваши аргументы ближе.

'paged' => 1

Разбитый на страницы номер страницы для показа.

Это говорит, покажите страницу 2. Вы имеете дело с компьютерами, и первое число 0, не 1.

Изменение в:

'paged' => 0

Вы также пропустили вызов к wp_reset_postdata(); для чистки после себя, и Вы никогда не указывали тип сообщения, состояние сообщения, и делает ли поле поиска стандартный поиск или поиск, измененный плагином

3
19.02.2020, 22:48
  • 1
    Привет Tom, В то время как соглашаются с использованием массива args по методу, отправленному OP, я думаю, что Ваша теория на разбитом на страницы параметре является неправильной. 'разбитый на страницы' => 1 должен показать первую страницу в ряде нумеровавшего страницы результата (нет никакой потребности включать его, если разбиение на страницы не используется). Я думаю, что этот пример установки разбитого на страницы параметра из кодекса должен создать резервную копию того, что я говорю: $paged = (get_query_var ('разбитый на страницы'))? get_query_var ('разбил на страницы'): 1; Если разбито на страницы не установлен, установите его на 1. –  James Kemp 17.03.2014, 10:51

Теги

Похожие вопросы