【问题标题】:How to exclude normal pages from wp search results如何从 wp 搜索结果中排除普通页面
【发布时间】:2014-12-07 12:50:57
【问题描述】:

在我的 wordpress 博客中,和其他人一样,我有帖子和普通页面。

提交wp搜索表单时,我如何从搜索结果中排除正常页面?

假设我有一个帖子和一个页面都包含“foo”这个词。

如何获取“foo”的搜索结果以仅列出帖子?

【问题讨论】:

标签: wordpress


【解决方案1】:

您可以使用pre_get_posts 将主查询更改为仅搜索“帖子”帖子类型。在你的functions.php中添加这个

(注意:需要 PHP 5.3+)

add_action( 'pre_get_posts', function ( $q ) {
    if( !is_admin() && $q->is_main_query() && $q->is_search() ) {
        $q->set( 'post_type', 'post' );
    }
});

【讨论】:

    【解决方案2】:

    Pieter Goosen 的回答还可以,但将搜索查询结果限制为帖子类型post。这是另一种修改页面帖子类型的exclude_from_search 属性并保持其他可能查询的帖子类型不变的方法:

    add_action( 'init', 'so27342745_exclude_from_search' );
    function so27342745_exclude_from_search()
    {
        global $wp_post_types;
    
        $wp_post_types['page']->exclude_from_search = true;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 2011-11-19
      • 2017-12-22
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      • 2021-08-04
      相关资源
      最近更新 更多