Пользовательский тип сообщения не отображается в результатах поиска - PullRequest
2 голосов
/ 16 июня 2019

Я работаю над плагином, где я добавляю пользовательский тип поста и вставляю его посты на основе функции 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' );

При поиске любого связанного ключевого слова я никогда не получаю ни одного поста типа таксархива в результатах поиска.Как их можно проиндексировать в результатах?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...