WordPress 投稿のカテゴリーリンクを表示したい場合

2012-12-10

投稿にはカテゴリーを複数設定できます。
投稿一覧や投稿画面において、投稿が属するカテゴリーをリンクとして表示させておきたい場面は結構あるかと思います。
特にブログやコラムなんかだとこういう事多いですよね。
これを関数化しておくと結構便利、という話です。

投稿が属するカテゴリーはget_the_categoryを使えば取得できます。
このように。

$my_cats = get_the_category($post->post_ID);

ただこのままだと配列の状態で取得されるので、
通常はリンクなどのHTMLに加工して出力するかと思います。

カテゴリーIDが分かれば、
カテゴリーページへのリンクはget_category_linkを使って取得できます。
foreach ($my_cats as $my_cat) {
    echo get_category_link($my_cat->cat_ID);
}

またどこかで使いそうな感じの処理ですね。
こういった処理は関数化しておくと便利です。
カンマ区切りでカテゴリーリンクを表示する関数を作ってみました。
function get_post_category_link($post_id) {
 
    //カテゴリーリスト
    $my_cats = get_the_category($post_id);
     
    if ($my_cats) {
     
        $cats_cnt = 0;
        foreach ($my_cats as $my_cat) {
             
            if ($cats_cnt > 0) {
                echo ', ';
            }
 
            $cat_link = get_category_link($my_cat->cat_ID);
 
            echo '<a href="' . $cat_link . '">' . $my_cat->name .'</a>';
             
            $cats_cnt++;
        }
    }
 
}

こんな感じで使います。
引数「$post_id」には投稿IDを与えます。
<?php
	get_post_category_link($post_id);
?>