在我的博客页面上,我有2个默认的wordpress搜索表单,标题中的1个应该搜索所有内容,1个位于侧边栏中,只能搜索帖子。
我设法通过pre_get_posts更改为查询以满足我的需求,但它会为两种搜索表单更改
function exclude_pages($query) {
if ($query->is_home() && $query->is_main_query() && !is_admin() ) {
$query->set('post_type', 'post');
}
}
add_action('pre_get_posts', 'exclude_pages');
如何指定该功能仅更改侧栏中搜索表单的查询?
答案 0 :(得分:2)
在您的某个搜索表单中添加隐藏字段,然后检查是否已在pre_get_posts
中为其设置了值。
在侧边栏表单中添加:
<input type="hidden" name="posts-only" value="1" />
然后改变这个:
if ($query->is_home() && $query->is_main_query() && !is_admin() ) {
$query->set('post_type', 'post');
}
要:
// Check if posts only value has been set and equal to 1. Return if not.
if ( ! isset( $_GET['posts-only'] ) || 1 !== $_GET['posts-only'] ) {
return false;
}
if ( $query->is_home() && $query->is_main_query() && ! is_admin() ) {
$query->set( 'post_type', 'post') ;
}