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);
?>