3

好的,所以我创建了一个 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; ?>
4

4 回答 4

11

获取类别对象:

$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>

注意:代替wp_get_post_categories($id),您可以只使用get_the_category()


更新:如果要显示所有类别,只需循环它们:

<?php foreach ( $cats as $cat ): ?>

    <a href="<?php echo get_category_link($cat->cat_ID); ?>">
        <?php echo $cat->name; ?>
    </a>

<?php endforeach; ?>
于 2013-01-02T19:40:55.653 回答
3

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

<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>
于 2015-11-05T22:34:17.657 回答
3

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

<p><?php _e( 'Category: ', 'themename' ); the_category(', '); // Separated by commas ?></p>
于 2017-06-15T14:17:09.983 回答
2

如果您有自定义 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 />';
} ?>

点击这里查看详细信息

于 2016-09-27T08:36:16.117 回答