WordPress自定义帖子类型类别页面未加载帖子

时间:2017-02-16 17:58:45

标签: wordpress post custom-post-type categories taxonomy

我创建了一个名为Manufactures的自定义帖子类型,并添加了大量的帖子和类别。单个帖子页面有效,但类别/档案页面不显示任何帖子。

制造商分为不同的类别,我需要显示每个类别中所有帖子的存档。当我去制造商>类别> Ge Speedtronic并点击"查看类别"它带我到下面列出的网址。

http://localhost/category/manufactures/ge-speedtronic/

这是令人困惑的地方。我用于自定义帖子类型的类别"制造商"也显示在我的其他自定义帖子类型和默认帖子部分下。所以我创建了一个名为Manufactures-Cat的子类别。这可能会导致问题。

知道哪些帖子没有在类别页面上加载?是否可以创建仅在特定帖子类型下显示的类别?

此代码位于我的functions.php

add_action( 'init', 'create_manufacturers' );
function create_manufacturers() {
  register_post_type( 'manufacturers',
    array(
      'labels' => array(
        'name' => __( 'Manufacturers' ),
        'singular_name' => __( 'Manufacturer' )
      ),
        'hierarchical'        => true,
        'public'              => true,
        'show_ui'             => true,
        'show_in_menu'        => true,
        'show_in_nav_menus'   => true,
        'show_in_admin_bar'   => true,
        'menu_position'       => 5,
        'can_export'          => true,
        'has_archive'         => true,
        'has_category'         => true, 
        'exclude_from_search' => false,
        'publicly_queryable'  => true,
        'capability_type'     => 'post',
        'taxonomies'  => array( 'category' ),
        'rewrite' => array('slug' => 'manufacturers'),
        'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
    )
  );
}

这是我的category.php文件中的代码。

<?php get_header();?>
<div class="container page-category-wrap">
    <div class="row">
        <div class="col-md-9">
            <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
            <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                <div class="entry-content">
                    <h3><?php the_title(); ?></h3>
                    <?php the_content(); ?>
                </div>
            </article>
            <?php endwhile; endif; ?>
        </div>
        <div class="col-md-3">
            <?php dynamic_sidebar ('sidebar-1');?>
        </div>
    </div>
</div> 
<?php get_footer(); ?>

1 个答案:

答案 0 :(得分:2)

您必须将自定义帖子类型添加到查询对象:

function my_query_post_type($query) {
    if ( is_category() && ( ! isset( $query->query_vars['suppress_filters'] ) || false == $query->query_vars['suppress_filters'] ) ) {
        $query->set( 'post_type', array( 'post', 'manufacturers' ) );
        return $query;
    }
}
add_filter('pre_get_posts', 'my_query_post_type');

https://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts