自定义帖子类型在类别页面上不可见

时间:2014-10-09 作者:user1452062

我想为我的自定义帖子类型使用默认类别,但当我打开类别页面时,那里没有帖子。

循环非常简单:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div class="col-md-3 col-sm-6 col-xs-12 margin-bottom-30">
    <?php $large_image_url = wp_get_attachment_image_src( get_post_thumbnail_id(), \'product\' ); ?>
        <div class="item-image"><a href="<?php echo $large_image_url[0]; ?>" class="zoom-effect"><?php the_post_thumbnail(\'product\', array( \'class\' => \'img-full\' )); ?></a></div>
    <div class="item-desc box-grey padding-all-10"><?php the_title(); ?></div>
</div>
<?php endwhile; else: ?>
    <p><?php _e(\'No posts were found. Sorry!\'); ?></p>
<?php endif; ?>
我不想使用自定义分类法。我还创建了存档{cpt}。用于显示所有帖子的php文件。

问题出在哪里?

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

默认情况下,自定义帖子类型从主查询中排除(分类法页面和自定义帖子类型存档页面上除外),这就是为什么在类别页面上看不到来自自定义帖子类型的帖子。

您需要手动在主查询中包含自定义帖子类型的帖子。就这样了pre_get_posts 它在执行主查询之前更改主查询。

您可以执行以下操作以在类别页面中包含自定义帖子类型

function custom_post_type_cat_filter($query) {
  if ( !is_admin() && $query->is_main_query() ) {
    if ($query->is_category()) {
      $query->set( \'post_type\', array( \'post\', \'YOUR CPT\' ) );
    }
  }
}

add_action(\'pre_get_posts\',\'custom_post_type_cat_filter\');

SO网友:user131648
<?php
    $args = array(
        \'post_type\' => \'post\',\'posts_per_page\' => 2
    );

    $post_query = new WP_Query($args);
if($post_query -> have_posts() ) {
  while($post_query->have_posts() ) {
    $post_query->the_post();
     ?>
    <h2><?php the_title(); ?></h2>
    <h2><?php the_content(); ?></h2>
    <?php
  }
}
?>
结束

相关推荐

wordpress nested loop

我正在构建嵌套循环查询。我有一个元框,可以捕获邮件id(分类器和转发器)。到目前为止,我的代码while ( have_posts() ) : the_post(); ?> <div id=\"<?php echo $post->post_name; ?>\"> <h1><?php the_title(); ?></h1> <?php the_content