0

我设置了一个基本循环来显示自定义分类中的所有术语。

<?php   
$workshops = get_terms( 'workshop', array(
    'orderby'    => 'name',
    'hide_empty' => 0,
) );
foreach ( $workshops as $workshop ) { ?>

        <h3><?php echo $workshop->name; ?></h3>         
        <?php echo term_description($workshop); ?>                     

<?php } ?>

如何在该循环中显示每个相应术语的所有帖子?

例如..

分类是电影。术语是喜剧、恐怖等。

我希望输出是

喜剧术语的喜剧描述

  • 电影 1
  • 电影 2

恐怖术语的恐怖描述

  • 电影 3
  • 电影 4

谢谢!富有的

4

1 回答 1

0

首先,您使用的是不推荐使用的版本,get_terms因此我们应该首先修复它:

$workshops = get_terms( array(
    'taxonomy' => 'workshop',
    'orderby' => 'name',
    'hide_empty' => false
) );

然后,在您的术语循环中,您需要创建另一个查询来获取属于该术语的所有帖子:

$query = new WP_Query( array(
    'post_type' => 'post',  // Or your custom post type's slug
    'posts_per_page' => -1, // Do not paginate posts
    'tax_query' => array(
        array(
            'taxonomy' => 'workshop',
            'field' => 'term_id',
            'terms' => $workshop->term_id
        )
    )
) );

最后,仍然在您的术语循环中,编写另一个循环来构建帖子列表:

<?php if ( $query->have_posts() ): ?>
    <ul class="term-post-list" id="term-<?php echo $workshop->term_id; ?>-posts">

        <?php while ( $query->have_posts() ): $query->the_post(); ?>
            <li id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                <?php the_title(); ?>
            </li>
        <?php endwhile; wp_reset_postdata(); ?>

    </ul>
<?php endif; ?>
于 2016-10-13T21:25:25.463 回答