如何编写模板以列出具有自定义分类术语的所有帖子


How to write a template to list all posts with a custom taxonomy term

我使用了CPT(自定义帖子类型)插件来创建一个名为资源的自定义帖子类型,以及一个名为资源类别的自定义分类。在该分类法中,我有两个类别/术语:博客和书籍。

我已经弄清楚要编辑哪个文件:分类法.php

但是我不知道如何编写模板。这是我到目前为止所拥有的:

<?php get_header(); ?>
<section class="content">
<div class="page-title pad group"><h2><?php single_term_title(); ?></h2></div>
<div class="pad group">     
<?php if ((category_description() != '') && !is_paged()) : ?>
        <div class="notebox">
            <?php echo category_description(); ?>
        </div>
    <?php endif; ?>
    <?php if ( have_posts() ) : ?>
        <div class="post-list group">
            <?php $i = 1; echo '<div class="post-row">'; while ( have_posts() ): the_post(); ?>
            <?php get_template_part('content'); ?>
            <?php if($i % 2 == 0) { echo '</div><div class="post-row">'; } $i++; endwhile; echo '</div>'; ?>
        </div><!--/.post-list-->
        <?php get_template_part('inc/pagination'); ?>
    <?php endif; ?>
</div><!--/.pad-->
</section><!--/.content-->
<?php get_sidebar(); ?>
<?php get_footer();

什么有效:

  1. 当我转到资源类别/书籍时,该页面显示。好!
  2. 将显示类别"书籍"的标题和类别说明。好!

什么不起作用:该类别中没有项目列表。它只是空白的。我最初从 archive.php 中复制了代码,它在搜索页面、作者列表、我认为类别存档上也能正常工作......

怎么了?我是 php n000000b,所以我很难翻译互联网上的教程/答案来解决这个问题。

使用您的自定义WP_QUERY

$args = array(
    'post_type'     => 'resources',
    'tax_query'     => array(
            'taxonomy' => 'resource-categories',
            'field'    => 'id',
            'terms'    => get_queried_object()->term_id,
    );
);
$query = new WP_QUERY( $args );
while ( $query->have_posts() ): 
    $query->the_post()
    ..
endwhile;

你的问题不是你的代码,这是正确的,应该开箱即用。

检查以下内容:

  • 确保自定义帖子类型和自定义分类的 public 参数都设置为true register_post_type()register_taxonomy()

  • 通过简单地访问后端的永久链接设置页面来重新保存/重新刷新您的永久链接。

这应该可以解决您的问题。如果没有,那么您在插件或主题中存在严重的冲突或过滤器错误。

请注意,永远不要运行自定义查询,因为主查询中的某些内容需要更改或在主查询中不起作用。正确正确地解决问题,不要隐藏它;-)