在Wordpress中显示所有类别的post in循环

时间:2014-03-09 11:32:14

标签: php wordpress-theming

我正在寻找一种更好的方法来输出循环中帖子的类别列表。这就是我所拥有的:

<?php $category = get_the_category(); ?>
<a href="<?php echo get_category_link($category[0]->cat_ID); ?>"><?php echo $category[0]->cat_name; ?></a>, 
<a href="<?php echo get_category_link($category[0]->cat_ID); ?>"><?php echo $category[1]->cat_name;?></a>, 
<a href="<?php echo get_category_link($category[0]->cat_ID); ?>"><?php echo $category[2]->cat_name;?></a>

显然这不是很好,因为如果没有三个类别我会得到多余的逗号。循环和输出类别的最佳方法是什么,中间有逗号?

非常感谢

2 个答案:

答案 0 :(得分:1)

你可以使用

<?php echo get_the_category_list(); ?>

将以此格式输出所有内容(作为列表):

<ul class="post-categories">
    <li>
        <a href="http:myblog.com/category/business" title="View all posts in Business" rel="category tag">Business</a>
    </li>
</ul>

您可以阅读有关here

的更多信息

或者如果您使用

 <?php wp_get_post_categories( $post_id, $args ); ?> 

它会将类别ID输出为数组

类似

$post_categories = wp_get_post_categories( $post->ID );
foreach($post_categories as $c){
    $cat = get_category( $c );
    $link = get_category_link( $c );
    echo "<a href='{$link}'>{$cat->name}</a>";
}

可能会更适合你

您可以阅读有关此功能的更多信息here

答案 1 :(得分:1)

此代码应该有效:

<?php
$separator = ',';
$output = '';
$categories = get_the_category();
if ($categories){

    foreach($categories as $category) {
        $output .= '<a href="'.get_category_link( $category->term_id ).'" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $category->name ) ) . '">'.$category->cat_name.'</a>'.$separator;
    }

echo trim($output, $separator);
}
?>

有关wordpress codex

get_the_category()功能的更多信息和示例