Wordpress搜索功能仅搜索帖子

Dav*_*vey 12 php wordpress search

我想使用wordpress搜索功能,但我希望它只搜索我的博客帖子并从查询中排除我的静态页面.这该怎么做?我并不反对使用插件.

Dea*_*ley 39

答案在这里

http://www.shilling.id.au/2011/06/23/wordpress-search-only-show-post-and-not-pages/

<?php
function SearchFilter($query) {
    if ($query->is_search) {
        $query->set('post_type', 'post');
    }
    return $query;
}
add_filter('pre_get_posts','SearchFilter');
?>
Run Code Online (Sandbox Code Playgroud)

  • 这实际上不是一个很好的答案,除非您只想搜索您网站上每个搜索字段中的帖子.因此,管理区域和其他任何地方的任何搜索字段都可能会中断,除非您只想将它​​们全部用于搜索帖子.在实施此解决方案后,这可能不会立即显现,但在赛道上,您可以打赌它会导致问题. (4认同)
  • 接受的答案(以及链接的论坛帖子)概述了糟糕的结果.编辑核心文件永远不是一个好主意,在foreach循环中跳过结果可能会在涉及分页时导致混乱.这个钩子是一个更好的解决方案! (2认同)

小智 15

只需添加 <input type="hidden" name="post_type" value="post" />到主题搜索表单...问候!


Gus*_*avo 6

如果您未指定不同的帖子类型,此解决方案将使搜索仅检索帖子。如果您在不同搜索字段的隐藏字段中指定自定义帖子类型,则此方法不会干扰。

function searchFilter($query) {
    if ($query->is_search) {
        if ( !isset($query->query_vars['post_type']) ) {
            $query->set('post_type', 'post');
        }
    }
    return $query;
}
add_filter('pre_get_posts','searchFilter');
Run Code Online (Sandbox Code Playgroud)


waj*_*jiw 4

这个 wp 论坛页面有很多不同的示例,说明如何执行此操作,具体取决于您要编辑站点的位置(我相信 index.php 或 wp-includes/query.php 是您的选择):

http://wordpress.org/support/topic/possible-search-only-posts-exclude-pages