我创建了一个名为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(); ?>
答案 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