改造する

Release | Updated |

投稿のカテゴリー名・ID・スラッグを「取得」「表示」させる方法まとめ

この記事の概要

この記事では、WordPressのデフォルト機能としてある「投稿(投稿タイプ)」に登録されているカテゴリーを取得する方法をご紹介します。

  • 記事に紐付いているカテゴリーをひとつだけ取得
  • 記事に紐づいている複数のカテゴリーをすべて取得し表示
  • 投稿に登録しているカテゴリーをすべて取得し表示

なお、「カスタム投稿(カスタム投稿タイプ)」については記述方法が異なり、今回紹介しているコードではカテゴリーの取得ができないのでご注意ください!

「カスタム投稿(カスタム投稿タイプ)」の場合に取得する方法ついては、下記記事にて紹介しています。ぜひご覧ください!

記事に紐付いているカテゴリーをひとつだけ取得

紹介するコードの全体像

<?php
  // カテゴリーのデータを取得
  $cat = get_the_category();
  $cat = $cat[0];
?>

<?php // カテゴリー名の表示 ?>
<p class="category-name"><?php echo $cat->cat_name; ?></p>

<?php // カテゴリーIDの表示 ?>
<p class="category-id"><?php echo $cat->cat_ID; ?></p>

<?php // カテゴリースラッグの表示 ?>
<p class="category-slug"><?php echo $cat->slug; ?></p>

<?php // カテゴリーのリンクを取得 ?>
<a href="<?php echo get_category_link($cat->term_id); ?>">リンクのテキスト</a>

以下、詳しく解説していきます!

1. カテゴリーの情報を取得

下記の記述によって、カテゴリーデータの取得をしています。

$cat = get_the_category();
$cat = $cat[0];

カテゴリを単体で取得する場合はget_the_categoryを使用します。

2行目にある[0]を書き忘れると出力されないので気をつけましょう。

2. カテゴリー名の取得と表示

下記いずれかの記述でカテゴリー名を表示できます。 いずれの記述でも全く同じ値が取得されます。

echo $cat->name;
echo $cat->cat_name;

実際の表示方法は、下記のように記述します。

<?php
  $cat = get_the_category();
  $cat = $cat[0];
?>
<p class="category-name"><?php echo $cat->name; ?></p>

カテゴリー名だけを表示したい(他の情報は不要)場合は、下記のように短い記述で表示できます。

<p class="category-name"><?php echo get_the_category()[0]->name; ?></p>

3. カテゴリーIDの取得と表示

下記の記述でカテゴリーID(数字)を表示できます。

echo $cat->cat_ID;

実際の表示方法は、下記のように記述します。

<?php
  $cat = get_the_category(); 
  $cat = $cat[0]; 
?> 
<p class="category-id"><?php echo $cat->cat_ID; ?></p>

カテゴリーIDだけを表示したい(他の情報は不要)場合は、下記のように短い記述で表示できます。

<p class="category-name">
  <?php echo get_the_category()[0]->cat_ID; // カテゴリーIDの表示 ?>
</p>

4. カテゴリースラッグの取得と表示

下記いずれかの記述でスラッグを表示できます。 いずれの記述でも全く同じ値が取得されますのでお好きな方をどうぞ。

echo $cat->slug;
echo $cat->category_nicename;

実際の表示方法は、下記のように記述します。

<?php 
  $cat = get_the_category(); 
  $cat = $cat[0]; ?> 
<p class="category-slug"><?php echo $cat->slug; ?></p>

スラッグだけを表示したい(他の情報は不要)場合は、下記のように短い記述で表示できます。

<p class="category-name">
  <?php echo get_the_category()[0]->slug; ?>
</p>

5. カテゴリーリンクの取得と表示

下記の記述でカテゴリーのリンクURLを取得できます。

echo get_category_link($cat->term_id);

実際の表示方法は、下記のように記述します。

<?php
  $cat = get_the_category();
  $cat = $cat[0];
?> 
<a href="<?php echo get_category_link($cat->term_id); ?>">リンクのテキスト</a>

なお、「リンクのテキスト」については、実際の遷移先のカテゴリー名を表示することが多くあると思います。 下記のように記述することで、「カテゴリの一覧へ」というリンクテキストも一緒に表示できます。

<?php 
  $cat = get_the_category(); 
  $cat = $cat[0]; 
?>
<a href="<?php echo get_category_link($cat->term_id); ?>"><?php echo $cat->name; ?>の一覧へ</a>

リンクURLだけを取得してaタグのhref属性に入れたい(他の情報は不要)場合は、下記のように短い記述で表示できます。

<a href="<?php echo get_category_link(get_the_category()[0]->term_id); ?>">リンクのテキスト</a>

記事に紐づいている複数のカテゴリーをすべて取得し表示

記事によっては、複数のカテゴリーを選択・登録している場合もあるかと思います。

これから紹介する記述によって、その記事に紐付いているカテゴリーすべて取得し表示することが可能です。

カテゴリー名だけを一覧で表示する

下記は、カテゴリー名をリスト形式で表示させる方法です。

<ul>   
  <?php     
    // カテゴリー名の繰り返し表示
    $categories = get_the_category();
    foreach( $categories as $category ):
  ?>
  <li><?php echo $category->name; ?></li>
  <?php endforeach;?>
</ul>

出力HTML

<ul>
  <li>カテゴリー1</li>
  <li>カテゴリー2</li>
</ul>

カテゴリーをリンク付きで一覧で表示する

下記のように、カテゴリー名とカテゴリーリンクを表示させることもできます。

適宜classを付与するなどカスタマイズして利用してみてください。

<ul>
  <?php
    // カテゴリーをリンクで繰り返し表示
    $categories = get_the_category();
    foreach( $categories as $cat ):
  ?>
  <li><a href="<?php echo get_category_link($cat->term_id); ?>"><?php echo $cat->name; ?>の一覧へ</a></li>
  <?php endforeach;?>
</ul>

出力HTML

<ul>
  <li><a href="https://wordpress-web/category/customize/">カスタマイズ</a></li>
  <li><a href="https://wordpress-web/category/news/">ニュース</a></li>
</ul>

自動出力を使ってカテゴリーをリンク付きで一覧で表示

下記は非常に便利な取得の方法で、特に指定をすることなくul liのリスト形式で自動的に出力されます。

ulタグにのみclassが付与されるので、CSSの当て方には注意しましょう。

<?php
  $category = the_category();
  echo $category;
?>

自動出力HTML

<ul class="post-categories">
  <li><a href="https://wordpress-web/category/customize/" rel="category tag">カスタマイズ</a></li>
  <li><a href="https://wordpress-web/category/news/" rel="category tag">ニュース</a></li>
</ul>

「投稿」に登録しているカテゴリーをすべて取得し表示

WordPressの投稿に登録しているすべてのカテゴリーを取得して表示する場合です。

おもに、記事の一覧ページなどで利用することが多いと思います。

すべてのカテゴリー名を一覧で表示する

<ul>
  <?php
    // 投稿にあるすべてのカテゴリー名を繰り返し表示
    $categories = get_categories();
    foreach( $categories as $cat ):
  ?>
  <li><?php echo $cat->name; ?></li>
  <?php endforeach;?>
</ul>

出力HTML

<ul>
  <li>カテゴリー1</li>
  <li>カテゴリー2</li>
  <li>カテゴリー3</li>
</ul>

ここでは、get_categories()関数を使います。get_the_category()と混同することが多いの気をつけましょう。

注意点としては、wordpress上でカテゴリーを新規登録したのみでは表示されません。他の記事などですでに選択されているカテゴリーが一覧で表示されます。

すべてのカテゴリーをリンク付きで一覧で表示する

こちらもこれまで紹介した内容と同様のように、すべてのカテゴリーをリンク付きで表示させることもできます。

<ul>
  <?php
    // すべてのカテゴリーをリンク付きで繰り返し表示
    $categories = get_categories();
    foreach( $categories as $cat ):
  ?>
  <li><a href="<?php echo get_category_link($cat->term_id); ?>"><?php echo $cat->name; ?></a></li>
  <?php endforeach;?>
</ul>

出力HTML

<ul>
  <li><a href="https://wordpress-web.and-ha.com/category/category1/">カテゴリー1</a></li>
  <li><a href="https://wordpress-web.and-ha.com/category/category2/">カテゴリー2</a></li>
  <li><a href="https://wordpress-web.and-ha.com/category/category3/">カテゴリー3</a></li>
</ul>

カテゴリーに含まれているいろいろなデータ

下記のようにvar_dump()にて指定するとget_the_category()で取得したデータの中身を確認できます。

<?php var_dump($cat); ?>

どんなデータが含まれているのか理解が深まると思うので、一度試してみてはいかがでしょうか!

この記事の参考サイト

こちらの記事もいかかですか?

すべての記事一覧へ

  1. HOME
  2. 投稿のカテゴリー名・ID・スラッグを「取得」「表示」させる方法まとめ