如何显示自定义帖子分类术语及其帖子(如果有)的列表?

时间:2022-02-17 作者:user1255168

因此,我创建了一个自定义帖子类型(位置)和一个自定义分类法(城市)。我正在尝试设置一个页面,其中列出了分类术语,后跟与该术语相关的任何帖子。但是,如果没有该任期的职位,那么什么都不会出现。

我想做一些类似的事情:

第1学期

第二学期

第三学期(空)

这学期没有帖子,我该怎么做?以下是我的代码(代码更新以反映以下评论中的建议):

<?php
    $taxonomy       = \'city\';
    $args           = array(
        \'taxonomy\' => $taxonomy,
        \'hide_empty\'     => false,
        \'orderby\'  => \'count\',
        \'order\'    => \'DESC\',
    );
    $taxonomy_terms = get_terms( $args );

    if ( $taxonomy_terms ) {
        foreach ( $taxonomy_terms as $taxonomy_term ) {

            $args = array(
                \'post_type\'      => \'location\',
                \'posts_per_page\' => - 1,
                \'hide_empty\'     => false,
                \'tax_query\'      => array(
                    \'relation\' => \'AND\',
                    \'taxonomy\' => $taxonomy,
                    \'terms\'    => $taxonomy_term->slug,
                    \'field\'    => \'slug\',

                ),
            );

        $query = new WP_Query( $args );

        if ( $query->have_posts() ) : ?>
            <h4><?php echo $taxonomy_term->name; ?></h4>
            
            <div class="locations">
            
            <?php while ( $query->have_posts() ) : $query->the_post(); ?>

                <div class="location">
                    <div class="price"><a href="<?php the_permalink(); ?>"><?php the_field(\'price_per_month\'); ?> / month</a></div>
                    <a href="<?php the_permalink(); ?>">
                        <h3><?php the_field(\'street_address\'); ?></h3>
                        <h4><?php the_field(\'city\'); ?>, <?php the_field(\'state\'); ?></h4>
                    </a>
                    <a href="<?php the_field(\'google_map_link\'); ?>" rel="noreferrer" target="_blank"><i class="fal fa-map-marker-alt"></i> Google Maps</a>
                </div>
                
            <?php endwhile; ?>

            </div>

        <?php else : ?>

            <h4><?php echo $taxonomy_term->name; ?> (Coming Soon)</h4>

            <div class="locations">

                  <div class="location coming">
                      <h3></h3>
                      <h4></h4>
                      <a href="#" target="_blank"></a>
                  </div>

                  <div class="location coming">
                      <h3></h3>
                      <h4></h4>
                      <a href="#" target="_blank"></a>
                </div>

            </div>

        <?php wp_reset_postdata();
        endif;

    }
}
?>
任何帮助都将不胜感激!

1 个回复
SO网友:Sébastien Serre

根据文件:https://developer.wordpress.org/reference/functions/get_terms/ WP 4.5中更改了获取条款的方式。保持开发的新方式总是好的。

也就是说,这个代码似乎在我这边起作用:

    $taxonomy       = \'city\';
    $args           = array(
        \'taxonomy\' => $taxonomy,
        \'orderby\'  => \'count\',
        \'order\'    => \'DESC\',
    );
    $taxonomy_terms = get_terms( $args );

    if ( $taxonomy_terms ) {
        foreach ( $taxonomy_terms as $taxonomy_term ) {

            $args = array(
                \'post_type\'      => \'location\',
                \'posts_per_page\' => - 1,
                \'hide_empty\'     => false,
                \'tax_query\'      => array(
                    \'relation\' => \'AND\',
                    \'taxonomy\' => $taxonomy,
                    \'terms\'    => $taxonomy_term->slug,
                    \'field\'    => \'slug\',

                ),
            );
我通常使用https://generatewp.com/wp_query/ 生成我的查询。

相关推荐

当in_the_loop()为假时,何时以及为什么is_Single(‘my_cpt’)为真?

我正在使用模板系统的示例代码。此地址的页码:http://project.test/my_cpt/hello-post/.无法理解原因is_singular( \'my_cpt\' ) 是true 虽然in_the_loop() 是false.在页面模板中The Loop "E;“工程”:if ( have_posts() ) { while ( have_posts() ) { the_post(); ?>