自定义帖子类型未出现在搜索结果中

时间:2019-06-16 12:34:14

标签: wordpress search custom-post-type

我正在开发一个插件,在其中添加自定义帖子类型,并在激活插件后基于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' );

当我搜索任何相关关键字时,在搜索结果中我从没有得到任何分类分类帖子类型的帖子。如何在结果中为它们建立索引?

0 个答案:

没有答案