是的,这是可能的。不过,您必须使用自定义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
动作)并在过滤器之后甚至在过滤器内部移除。