WordPressの投稿でカテゴリー名(複数)を取得して表示する

WordPressの投稿(single.php)でカテゴリー名(複数)を取得したい事が有りまして、ちょっと調べながらやってみました。ちなみにカテゴリー名だけじゃなくてスラッグとかも取れるので色々使えそう。色々試してみた事をダラダラっと書いてみます。

カテゴリー情報の取得はget_the_category()を使う

投稿でカテゴリー名を取得するにはget_the_category()というのを使えばOK。とりあえず適当な変数に突っ込んでちゃんと取れてるかprint_rしてみる。

成功!投稿のカテゴリ情報が色々取れました。

Array
(
    [0] => stdClass Object
        (
            [term_id] => 281
            [name] => WordPress
            [slug] => wordpress
            [term_group] => 0
            [term_taxonomy_id] => 282
            [taxonomy] => category
            [description] => 
            [parent] => 1
            [count] => 69
            [object_id] => 3803
            [filter] => raw
            [cat_ID] => 281
            [category_count] => 69
            [category_description] => 
            [cat_name] => WordPress
            [category_nicename] => wordpress
            [category_parent] => 1
        )

    [1] => stdClass Object
        (
            [term_id] => 287
            [name] => サーバー
            [slug] => server
            [term_group] => 0
            [term_taxonomy_id] => 288
            [taxonomy] => category
            [description] => 
            [parent] => 1
            [count] => 21
            [object_id] => 3803
            [filter] => raw
            [cat_ID] => 287
            [category_count] => 21
            [category_description] => 
            [cat_name] => サーバー
            [category_nicename] => server
            [category_parent] => 1
        )

)

んで、この取ったデータを表示させるのも結構簡単。echoすれば良い。

//カテゴリー名を表示
cat_name;?>

//スラッグを表示
cat_nicename;?>

//カテゴリーIDを表示
cat_ID;?>

ただ、複数のカテゴリに所属していた場合は以下のように沢山書かないといけないので不便・・・しかも投稿によってはどれだけカテゴリに所属してるか分かんないし。

cat_name;?>
cat_name;?>
cat_name;?>

ここで色々試行錯誤していたのだが、結局うまくいかなかったのでココナラでプログラマーの方にアドバイスを頂いて解決した。ありがたや。

カテゴリー名を複数取得するにはfor文やforeach文を使うのがベター

どうやら配列に入ったデータを全部取得するならfor文かforeach文を使うらしい。なるほどこういうとこで使うんですな。

for文を使う場合

cat_name;
}?>

foreach文を使う場合

cat_name;
}?>

forでもforeachでも無事に所属カテゴリが全て表示出来ましたね!

今回の件で配列の取り出し方が理解出来た気がします。

get the category – WordPress Codex 日本語版

SPONCERD

コメントはまだありません


※承認後に反映されます