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

ありがとうジョセフ。複数のカテゴリがある場合、「Category」という単語が「Categories」に変わるようにコードを拡張しました。これを行うより良い方法があるかもしれませんが、どこにも見つかりませんでした:)

<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 に答える