显示自定义帖子类型类别存档页面

时间:2017-01-25 15:11:51

标签: php wordpress custom-post-type

我创建了自定义帖子类型:

function create_posttype() {

register_post_type( 'builds',
// CPT Options
    array(
        'labels' => array(
            'name' => __( 'Builds' ),
            'singular_name' => __( 'Build' )
        ),
                'taxonomies' => array('category', 'post_tag'),
        'public' => true,
        'has_archive' => true,
        'rewrite' => array('slug' => 'builds'),
                    'supports' => array('thumbnail', 'title', 'excerpt',      'revisions', 'comments', 'author')
    )
);}

       // Hooking up our function to theme setup
     add_action( 'init', 'create_posttype' );`

自定义帖子类型工作没有任何问题,但我无法完成一件事:

所以基本的想法是有自定义的帖子类型" Builds"我正在使用帖子类别(不是自定义分类法,因为在我的情况下它不是可行的选项)来分离这些构建 - 例如近战构建,远程构建,拼写构建等。我想要归档对于每个类别的自定义帖子类型,例如显示所有近战构建。为此,我使用类别teplates,例如category-melee.php基于类别slug,它工作正常,但它没有显示自定义帖子类型的任何帖子 - 只有给定类别的常规帖子。在这种情况下该怎么办?我是否应该尝试在主题中的某处找到并修改wp_query以包含" Builds" (因为我已经尝试过但没有成功)还是有其他一些解决方法?谢谢。

2 个答案:

答案 0 :(得分:0)

通过将此代码段添加到我的functions.php

来管理解决问题
add_action('pre_get_posts', function($query) {
if ( ! is_admin() && $query->is_main_query() ) {

    if ( is_archive() || is_category() ) {
        $query->set( 'post_type', 'builds' );
    }


}
});

答案 1 :(得分:0)

function namespace_add_custom_types( $query ) 
{
   if( is_category() || is_tag() && empty( $query->query_vars['suppress_filters'] ) ) 
   {
      $query->set( 'post_type', array(
      'post', 'nav_menu_item', 'your-custom-post-type-here'
       ));
      return $query;
   }
}
add_filter( 'pre_get_posts', 'namespace_add_custom_types' );