WordPress按帖子类型进行自定义搜索

时间:2013-07-11 作者:andys

是否可能:

如果文章类型为“文章”,则仅在文章标题中搜索。如果帖子类型为页面,则仅在帖子内容中搜索。

我试过了,但没有成功,也许有人能帮我?

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

是的,这是可能的。不过,您必须使用自定义SQL查询。

使用posts_where 筛选以修改查询。

function posts_where( $where ) {
    if( !is_admin() ) {
        $where = <YOUR CONDITION>;
    }
    return $where;
}
add_filter( \'posts_where\' , \'posts_where\' );
您的情况应该如下所示:

post_status = \'publish\' AND ((post_type = \'post\' AND post_title LIKE <QUERY>) OR (post_type = \'page\' AND post_content LIKE <QUERY>))

您还应该确保只修改主查询,而不是全部查询。您可以在主查询之前添加筛选器(即使用pre_get_posts 动作)并在过滤器之后甚至在过滤器内部移除。

结束

相关推荐

REGISTER_POST_TYPE EXCLUDE_FROM_SEARCH参数不起作用

但是,我有一个使用此代码注册的帖子类型\'exclude_from_search\' => true 似乎没有任何效果,因为我仍然在搜索页面中找到输出。我是不是犯了什么错误?add_action(\'init\', \'abundant_life_slides_register\'); function abundant_life_slides_register() { $args = array( \'label\' => \'Slides\'