我正在开发一个插件,其中我添加了一个自定义帖子类型,并在插件激活后基于wp\\u insert\\u post函数插入其帖子。问题是,无论我做什么,自定义帖子类型都不能出现在搜索中。
我尝试在通过pre\\u get\\u posts挂钩搜索的帖子类型中包含新的自定义帖子类型。我甚至用Relevansi插件检查了它,确保它们被索引并打印了要索引的自定义帖子类型的数组,并且它已经显示在数组中。我试图通过管理界面手动插入它。我甚至尝试过这个问题中提到的解决方案,但上述任何一项都不起作用:
https://stackoverflow.com/questions/36787961/wordpress-custom-post-type-not-showing-in-search-results
以下是我关于注册自定义帖子类型的代码:
$args = array(
\'labels\' => $labels,
\'supports\' => array( \'title\', \'editor\' ),
\'hierarchical\' => false,
\'public\' => true,
\'show_ui\' => false,
\'show_in_menu\' => false,
\'menu_position\' => 5,
\'show_in_admin_bar\' => false,
\'show_in_nav_menus\' => false,
\'can_export\' => true,
\'has_archive\' => true,
\'exclude_from_search\' => false,
\'publicly_queryable\' => true,
\'capability_type\' => \'post\',
);
register_post_type( \'taxarchive\', $args );
这是插入帖子的代码:
$taxonomies = $wpdb->get_results("SELECT term_id, name FROM $wpdb->terms");
$taxonomies_array = array();
wp_defer_term_counting(true);
foreach ($taxonomies as $taxonomy) {
$term = get_term($taxonomy->term_id);
$taxonomy = get_taxonomy($term->taxonomy);
if(isset($term->taxonomy) && $taxonomy->publicly_queryable) {
$taxonomies_array[$taxonomy->name] = $term->taxonomy;
$term_post = array(
\'post_title\' => $term->name,
\'post_content\' => $term->name,
\'post_status\' => \'publish\',
\'post_type\' => \'taxarchive\'
);
if(post_exists($term->name) == 0) {
wp_insert_post($term_post);
}
}
}
wp_defer_term_counting(false);
这是将taxarchive帖子类型添加到pre\\u get\\u posts挂钩的代码:
function add_post_type_to_search( $query ) {
if ( is_admin() || ! $query->is_main_query() ) {
return;
}
$args = array(
\'exclude_from_search\' => false,
);
$post_types = get_post_types( $args, \'names\', \'and\' );
print_r($post_types);
$query->set(
\'post_type\', array_values($post_types)
);
// print_r($query);
}
add_filter( \'pre_get_posts\', \'add_post_type_to_search\' );
当我搜索任何相关关键字时,我从未在搜索结果中获得任何taxarchive帖子类型的帖子。如何在结果中为它们编制索引?