function hotlinkers_wp_query($query) {
if ( !$query->is_admin && $query->is_search) {
$search_query = str_replace(\'-\',\' \', $query->query_vars[\'s\']);
$query->set(\'s\', $search_query);
}
return $query;
}
add_action(\'pre_get_posts\', \'hotlinkers_wp_query\');
这是用于搜索时找到的搜索结果。php我有一个else,所以如果没有找到搜索,它会显示15篇随机帖子(使用wp查询)
希望尽可能通过pre\\u get\\u帖子避免这种情况。
最合适的回答,由SO网友:ninnypants 整理而成
正如其他人所说,你不能使用pre-get帖子,因为无法知道搜索是否返回了任何帖子。我还想说,if-else是一种非常干净的方法,如果其他人也在研究这个问题,它可能是更好的选择。
但是如果你真的想在posts_results 或the_posts 返回搜索为空时应显示的替换帖子。
<?php
add_filter(\'the_posts\', \'np_replace_empty_search\', 10, 2);
function np_replace_empty_search($posts, $wp_query){
if($wp_query->is_search && empty($posts)){
$new_query = new WP_Query();
return $new_query->posts;
}
return $posts;
}