【发布时间】:2014-12-07 12:50:57
【问题描述】:
在我的 wordpress 博客中,和其他人一样,我有帖子和普通页面。
提交wp搜索表单时,我如何从搜索结果中排除正常页面?
假设我有一个帖子和一个页面都包含“foo”这个词。
如何获取“foo”的搜索结果以仅列出帖子?
【问题讨论】:
标签: wordpress
在我的 wordpress 博客中,和其他人一样,我有帖子和普通页面。
提交wp搜索表单时,我如何从搜索结果中排除正常页面?
假设我有一个帖子和一个页面都包含“foo”这个词。
如何获取“foo”的搜索结果以仅列出帖子?
【问题讨论】:
标签: wordpress
您可以使用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' );
}
});
【讨论】:
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;
}
【讨论】: