【问题标题】:Display a post's category within the wordpress loop?在 wordpress 循环中显示帖子的类别?
【发布时间】:2020-08-25 02:23:38
【问题描述】:

好的,我创建了一个 Wordpress 模板,该模板仅显示与“锻炼”类别相关联的帖子。在显示这些的循环中,我希望列出特定帖子的类别。

我在想这样的事情会起作用:

$id = get_the_ID();
$cats = wp_get_post_categories($id);

但是我不知道如何在屏幕上回显它。 任何人都知道如何在循环中显示每个帖子的类别?我看过的所有文章都只展示了如何显示所有类别,而不是显示与特定帖子关联的类别。

这是我的循环:

<div class="query">
<b><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></b>
    <?php 
        $id = get_the_ID();
        $cats = wp_get_post_categories($id);
    ?>
</div>
<?php endwhile; ?>

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    获取类别对象:

    $cats = get_the_category($id);
    

    只需呼应名称:

    echo $cats[0]->name;
    

    如果要输出链接,请使用:

    <a href="<?php echo get_category_link($cats[0]->cat_ID); ?>">
        <?php echo $cats[0]->name; ?>
    </a>
    

    注意:您可以使用get_the_category(),而不是wp_get_post_categories($id)


    更新:如果您想显示所有类别,只需遍历它们:

    <?php foreach ( $cats as $cat ): ?>
    
        <a href="<?php echo get_category_link($cat->cat_ID); ?>">
            <?php echo $cat->name; ?>
        </a>
    
    <?php endforeach; ?>
    

    【讨论】:

    • @ThomasNolan - 当然。只需遍历$cats 数组。我也为此更新了答案。
    【解决方案2】:

    谢谢约瑟夫。我已经扩展了您的代码,以便在有多个类别时将“类别”一词更改为“类别”。可能有更好的方法可以做到这一点,但我在任何地方都找不到它:)

    <p>
        <?php 
        $id = get_the_ID();
        $cats = get_the_category($id);
        echo ( count($cats) == 1  ? 'Category: ' : 'Categories: ');
        $c = 0; $n = 0;
        $c = count($cats);
        foreach ( $cats as $cat ):
            $n++; ?>
            <a href="<?php echo get_category_link($cat->cat_ID); ?>">
                <?php echo $cat->name; echo ( $n > 0 && $n < $c ? ', ' : ''); ?>
            </a>
        <?php endforeach; ?>
    </p>
    

    【讨论】:

      【解决方案3】:

      如果其他人需要这方面的帮助,您可以在帖子循环中使用它:

      <p><?php _e( 'Category: ', 'themename' ); the_category(', '); // Separated by commas ?></p>
      

      【讨论】:

      • 准确地说:the_category()显示帖子的所有类别,而不仅仅是一个。
      【解决方案4】:

      如果您有自定义 post_type,则获取帖子类别

      <?php
      $categories = get_the_terms( $post->ID, 'taxonomy' );
      // now you can view your category in array:
      // using var_dump( $categories );
      // or you can take all with foreach:
      foreach( $categories as $category ) {
          echo $category->term_id . ', ' . $category->slug . ', ' . $category->name . '<br />';
      } ?>
      

      click here for detail

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-29
        • 1970-01-01
        相关资源
        最近更新 更多