仅搜索特定页面ID的页面的搜索栏

时间:2015-11-18 作者:Karonlps

如何为只搜索特定页面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;
    }
但这会影响其他页面上使用的搜索栏。

1 个回复
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()

此外,您不必返回$查询。

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请