我有一个自定义的帖子类型,我想可以搜索(我使用relevanssi搜索插件)。我有以下代码来添加自定义帖子类型:
add_action(\'init\', \'eyewebz_create_post_types\');
function eyewebz_create_post_types() {
register_post_type(\'project\',
array( \'taxonomies\' => array(\'category\'),
\'labels\' => $labels,
\'has_archive\' => true,
\'show_in_rest\' => true,
\'hierarchical\' => true,
\'public\' => true,
\'publicly_queryable\' => true,
\'supports\' => array(\'title\', \'editor\', \'post-formats\', \'page-attributes\', \'thumbnail\', \'excerpt\'),
\'menu_icon\' => \'dashicons-index-card\'
));
}
这种帖子类型需要显示在搜索结果中,但我似乎无法做到这一点。我已尝试更改如下所示的pre\\u get\\u帖子,但仍然没有得到所需的结果。
add_filter(\'pre_get_posts\', \'extend_search_cpt\');
function extend_search_cpt($query)
{
if($query->is_search) {
$query->set(\'post_type\', array(\'post\', \'page\', \'project\'));
}
return $query;
}
如果在设置post\\u类型后var\\u转储查询,我可以看到它包含在查询中,但在搜索结果中仍然没有任何自定义post类型。(如果之前我var\\u转储了查询,则查询中没有post\\u类型的标志)。
有什么想法吗?可能是什么问题?
SO网友:Er Deepak Prabhakar
请在register post type函数中将exclude\\u from\\u search添加为false
add_action(\'init\', \'eyewebz_create_post_types\');
function eyewebz_create_post_types() {
register_post_type(\'project\',
array( \'taxonomies\' => array(\'category\'),
\'labels\' => $labels,
\'has_archive\' => true,
\'show_in_rest\' => true,
\'hierarchical\' => true,
\'public\' => true,
\'publicly_queryable\' => true,
\'supports\' => array(\'title\', \'editor\', \'post-formats\',
\'page-attributes\', \'thumbnail\', \'excerpt\'),
\'exclude_from_search\' => false,
\'menu_icon\' => \'dashicons-index-card\'
));
}