Я работаю над плагином, где я добавляю пользовательский тип поста и вставляю его посты на основе функции wp_insert_post после активации плагина.Проблема в том, что пользовательские типы сообщений не могут появляться в поиске, что бы я ни делал.
Я попытался включить новый пользовательский тип сообщений в типы сообщений, которые нужно искать через хук pre_get_posts.Я даже проверил его с помощью плагина релевантности и удостоверился, что они проиндексированы, и напечатал массивы пользовательских типов записей, которые нужно проиндексировать, и это уже показано в массиве.Я попытался вставить его вручную через интерфейс администратора.Я даже попробовал решение, упомянутое в этом вопросе, и ничего из вышеперечисленного не сработало:
Пользовательский тип записи WordPress не отображается в результатах поиска
Вот мой код для регистрациипользовательский тип сообщения:
$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);
Этот код добавляет тип записи таксархива в хук 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' );
При поиске любого связанного ключевого слова я никогда не получаю ни одного поста типа таксархива в результатах поиска.Как их можно проиндексировать в результатах?