Я пытаюсь создать собственный 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 );
?>

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');