我正在开发一个插件,在其中添加自定义帖子类型,并在激活插件后基于wp_insert_post函数插入其帖子。问题是自定义帖子类型无论我做什么都无法出现在搜索中。
我尝试将新的自定义帖子类型包含在要通过pre_get_posts挂钩搜索的帖子类型中。我什至已使用relevanssi插件对其进行了检查,并确保它们已被索引并打印了要索引的自定义帖子类型的数组,并且该数组已在其中显示。我试图通过管理界面手动插入它。我什至尝试了此问题中提到的解决方案,但上述方法均无效:
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_get_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' );
当我搜索任何相关关键字时,在搜索结果中我从没有得到任何分类分类帖子类型的帖子。如何在结果中为它们建立索引?