Php 如何使用pre_get_帖子定位特定搜索表单?

Php 如何使用pre_get_帖子定位特定搜索表单?,php,search,wordpress,Php,Search,Wordpress,在我的博客页面上,我有两个默认的wordpress搜索表单,一个在标题中搜索所有内容,一个在侧边栏中只搜索帖子 我设法通过pre_get_posts更改为query,以满足我的需要,但它对两种搜索表单都进行了更改 function exclude_pages($query) { if ($query->is_home() && $query->is_main_query() && !is_admin() ) { $query->set

在我的博客页面上,我有两个默认的wordpress搜索表单,一个在标题中搜索所有内容,一个在侧边栏中只搜索帖子

我设法通过pre_get_posts更改为query,以满足我的需要,但它对两种搜索表单都进行了更改

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

如何指定该函数仅更改侧边栏中搜索表单的查询?

向其中一个搜索表单添加隐藏字段,然后检查是否已在
pre\u get\u 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') ;
}