如何为只搜索特定页面ID的页面创建搜索栏?这不应影响其他页面上的搜索栏。
我尝试了以下方法:
add_filter( \'pre_get_posts\', \'pregetposts_forspecificpage\' );
function pregetposts_forspecificpage($query){
if ($query->is_search) {
$query->set(\'post_type\', \'page\');
$query->set(\'post__in\', array(22103,22121));
}
return $query;
}
但这会影响其他页面上使用的搜索栏。
SO网友:Sladix
您可以尝试这样修改过滤器
function pregetposts_forspecificpage($query){
if(!is_admin() && $query->is_main_query() && is_search())
{
$query->set(\'post_type\', \'page\');
$query->set(\'post__in\', array(22103,22121));
}
}
编辑:已添加!是\\u admin(),因为我们只想更改前面的查询$查询->is\\u main\\u query(),以确保我们正在更改主查询。将$query->is\\u search替换为is\\u search()
此外,您不必返回$查询。