如何从搜索中删除页面?


13

我不需要在我的网站中搜索页面,而只想搜索帖子,有没有办法做到这一点?谢谢

search 

Answers:


28

以下内容应使页面帖子类型不再可搜索。

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

我在哪里放置该代码?谢谢

您可以将其放在主题的functions.php中。
prettyboymp 2010年

非常感谢。我只复制粘贴了它,就可以完美地工作

13

functions.php中的以下内容也很好地起作用:

//Remove pages from search results
function mySearchFilter($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
}
return $query;
}
add_filter('pre_get_posts','mySearchFilter');

shuold是解决方案。更优雅,更易维护。上面只是修改帖子类型参数,这是搜索查询本身。+1
kaiser

为“页面”帖子类型修改帖子类型对象是一个更好的解决方案。该解决方案强制将所有搜索查询的帖子类型硬性设置为“帖子”,这将阻止任何自定义帖子类型在网站上显示的情况下显示在搜索中。全局设置“页面”帖子类型对象的exclude_from_search属性意味着,任何依赖于检查此属性的代码都将具有正确的信息。
prettyboymp 2012年

:多一点的信息有点相关链接codex.wordpress.org/...
its_me

效果很好,但不推荐bbpress中的主题,因此效果不佳。使用“ $ wp_post_types ['page']-> exclude_from_search = true;” 是一个不错的选择
Kishore Sahoo 2015年

0

把它放在你的search.php

<?php if (is_search() && ($post->post_type=='page')) continue; ?>

在此代码的正下方-> <?php if ( have_posts() ) : while ( have_posts() ) : the_post();?>

您可以在此处找到更多信息http://wordpress.org/support/topic/possible-search-only-posts-exclude-pages


我没有search.php,如果我从另一个主题中检索了一个,它将起作用吗?谢谢

是。首先创建一个空白的search.php,然后从index.php复制并粘贴代码。然后按照我上面告诉你的做。
andrewk

1
实际上,您应该使用@prettyboymp的代码。它更容易,并按照您的要求进行。我测试了。如果您想要..
andrewk

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.