显示自定义帖子类型的类别概述

时间:2017-10-24 12:59:25

标签: wordpress custom-post-type categories

亲爱的Stackoverflow社区

我有一个带有类别的wordpress网站,也有自定义帖子类型。

现在我想列出网站上特定类别的所有自定义帖子类型帖子。

使用普通帖子,它正在运行,所有类别档案的帖子都列在网站上url / custom-post-type-slug / category-slug

但是现在我想要也列出自定义帖子类型的帖子。

如何将它们包含在类别档案中?

亲切的问候 卢卡斯

3 个答案:

答案 0 :(得分:1)

注册自定义帖子类型时。您可以添加参数has_archive以将其包含到归档中。

示例:

  register_post_type( 'custom',
    array(
      'labels' => array(
        'name' => __( 'Cryptomonnaie' ),
        'singular_name' => __( 'Cryptomonnaie' )
      ),
            'public' => true,
            'has_archive' => true,
            'taxonomies'          => array( 'category', 'post_tag' ),
    )
  );

如果已设置has_archive参数。您可以尝试在functions.php文件中添加一个过滤器,以此方式更改类别和标记的查询:

   add_filter('pre_get_posts', 'query_post_type');
function query_post_type($query) {
 if(is_category() || is_tag()) {
        $post_type = get_query_var('post_type');
        if($post_type)
            $post_type = $post_type;
        else
            $post_type = array('post','photo', 'geek', 'sport', 'bio', 'news','tv', 'trends', 'societe'); // replace cpt to your custom post type
        $query->set('post_type',$post_type);
        return $query;
        }
}

答案 1 :(得分:0)

如果您使用CPT用户界面创建自定义帖子类型,则会有一个选项“已存档”。将其设置为True。

否则

function create_post_type() {
  register_post_type( 'acme_product',
    array(
      'labels' => array(
        'name' => __( 'Products' ),
        'singular_name' => __( 'Product' )
      ),
      'public' => true,
      'has_archive' => true,
    )
  );
}
add_action( 'init', 'create_post_type' );

答案 2 :(得分:0)

此代码成功:

    add_filter('pre_get_posts', 'query_post_type');
function query_post_type( $query ) {
  if( is_category() &&  $query->is_main_query() && empty( $query->query_vars['suppress_filters'] ) ) {
    $query->set( 'post_type', array(
     'replace_with_custom_post_type'));
      return $query;
    }
}