WordPress 記事のカテゴリー情報を取得する方法まとめ

Pocket

wordpressのループ内やループ外でよく使うのがカテゴリーID。

カテゴリーIDを取得することで、特定カテゴリーのループを回したり、現在のページ(記事)のカテゴリーを取得してURLやカテゴリータイトルなど必要な情報を表示する場合などに利用できます。

この記事ではカテゴリーIDの取得方法とその利用方法を紹介していきます。

現在の投稿のカテゴリーIDを取得する方法

現在のカテゴリーIDを取得するには以下のようなコードを書きます。IDのみが欲しい場合とカテゴリーにまつわる情報が欲しい場合で2パターンの取得方法があります。

//現在の投稿のカテゴリーIDを取得
<?php 
    $post_cat=get_the_category(); 
    $cat_id=$post_cat[0]->cat_ID;
?>

//現在のカテゴリー情報を取得してIDを出力
<?php 
    $post_cat=get_the_category(); 
    $cat=$post_cat[0];
?>

<?php echo $cat->cat_ID ?>

上のパターンは変数にIDを入れてしまう方法。下の取得方法はカテゴリー情報の配列(オブジェクト?)を取得して必要な場所でカテゴリー名やIDを出力する場合に使います。

取得したカテゴリーの取り出し方

カテゴリーの出力できる情報はいかの通り。

  • cat_ID – 記事のカテゴリーID。
  • cat_name – 記事のカテゴリー名。
  • category_nicename – 記事カテゴリーのカテゴリースラッグ。
  • category_description – 記事のカテゴリー説明文。
  • category_parent – 記事の親カテゴリーにあたるカテゴリーのID。
  • category_count -カテゴリーが使われている回数。

それぞれの出力方法はさきほどのIDの出力と同じ。phpタグで囲ってechoで表示します。ループで回す場合も同じやり方でOK。

//現在のカテゴリー情報を取得してIDを出力
<?php 
    $post_cat=get_the_category(); 
    $cat=$post_cat[0];
?>

//現在のカテゴリー情報からサブループを回す
<?php 
  $args = array('numberposts' => '5','category' => $cat->cat_ID,'orderby' => 'desc');
  $rand_posts = get_posts($args);
  foreach($rand_posts as $post) : setup_postdata($post); ?>

    //ループの中身

  <?php endforeach; //ループここまで
  wp_reset_postdata(); ?>

特定のカテゴリー情報を取得する方法

ここまでは表示されるページのカテゴリーを動的に取得する方法を紹介しましたが、ここからは特定カテゴリーの情報を取得する方法を紹介します。

例えば表示する情報が固定されているグローバルナビやサイドバーのお知らせなどは、どのページでも固定されているのでそれらを表示するにはカテゴリーのIDを直接していしてやればOK。

<?php
//変数に直接カテゴリーIDを指定する
$category_1 = 1;
$category_2 = 2;
?>

//IDからカテゴリー情報を取得

カテゴリー名:<?php echo get_cat_name($category_1); ?>

カテゴリーIDから個別に情報を取得するタグは以下の通り。

  • get_cat_name – カテゴリー名を取得
  • get_category_link – カテゴリーURLを取得
  • get_category_parents – カテゴリーの親カテゴリーを取得
  • category_description – カテゴリーの説明文

まとめ

ここで紹介したタグの使い方をマスターすればループの外でも自由自在にカテゴリーIDを取得して出力することができるようになります。

トップページで特定カテゴリーの最新記事一覧などを表示することも多いと思うのでしっかり使えるようになっておきたいですね。

カテゴリーの他にタグと投稿者IDについてもまとめましたのでそちらも合わせてご覧下さい。