Пользовательский WP_Query для поиска

Я пытаюсь создать собственный WP_Query для страницы результатов поиска.

С помощью следующего кода на странице всегда отображаются все сообщения независимо от того:

<?php

$args = array(
    'posts_per_page' => '-1',
);

$query = new WP_Query( $args );

?>

Итак, я добавил поисковый запрос в $args, но он всегда не возвращает результатов - где это не так?

<?php

$search_query = get_search_query();

echo $search_query;

$args = array(
    'posts_per_page' => '-1',
    's' => $search_query
);

$query = new WP_Query( $args );

?>
Как убрать количество товаров в категории WooCommerce
Как убрать количество товаров в категории WooCommerce
По умолчанию WooCommerce показывает количество товаров рядом с категорией, как показано ниже.
1
0
930
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

1) Вы можете использовать шаблоны search.php и searchform.php в качестве отправных точек. Создание кодекса страницы поиска

2) Что касается пользовательского запроса, вы можете использовать хук pre_get_posts, чтобы проверить, находитесь ли вы на странице поиска, тогда вы получите $ _GET свои значения, отредактируйте свой запрос соответствующим образом. Справочник по действию - pre_get_posts

В этом обмене есть множество учебных пособий и вопросов, которые помогут вам. Некоторые из них простые, а другие более сложные. Для этого вам придется провести настоящее исследование. Надеюсь, поможет!

Ответ принят как подходящий

Я решил эту проблему с помощью pre_get_posts - меня все еще заинтриговало, почему использование метода WP_Query не работает, но вот что я сейчас использую:

function search_filter($query) {
    if ( !is_admin() && $query->is_main_query() ) {
      if ($query->is_search) {
        $query->set('posts_per_page', '-1');
      }
    }
  }

  add_action('pre_get_posts','search_filter');

Другие вопросы по теме