确保帖子类型的注册参数具有public
参数设置为true,或者,publicly_queryable
设置为true,然后exclude_from_search
设置为假。
然后,通过挂接到pre_get_posts
措施:
function filter_search( $query ) {
$postTypes = array( \'post\', \'post_type1-Movies\', \'post_type2-Trailers\', \'post_type3-Subtitrari\' );
//Here you can modify the $postTypes array, say to account for the value of $_REQUEST[\'post_type\'] as set by your dropdown or some such.
if ( $query->is_search ) {
$query->set( \'post_type\', $postTypes );
}
return $query;
}
add_action( \'pre_get_posts\', \'filter_search\' );
现在,所有自定义帖子类型都将包含在搜索查询中。
但是,如果您希望对与同一主题相关的多个帖子类型进行分组(例如,一部特定的电影或一些此类电影),则只搜索主要主题的帖子类型可能更明智(例如,搜索“战舰”只会搜索您的电影帖子类型)。将其他帖子类型与主题关联可以通过在每个关联项的元数据中存储主要主题的id来完成。这将允许您通过简单地搜索主要主题的id来查询每个其他帖子类型的相关数据,最好是在循环中显示它(即,在循环“战舰”搜索的结果时,查询拖车帖子类型中的项目,其中的元字段“movie”设置为当前正在处理的电影帖子的id)。