投稿に関するカテゴリーの取得【WordPress】

お久しぶりの投稿です。

この記事ではTopページや投稿記事内でカテゴリーを取得したい場合に使うタグの説明をします。

スポンサーリンク

Topページや投稿記事内でのカテゴリーの取得

カテゴリーをリンク付きで取得するのかリンクなしで取得するのか、はたまた一つなのか複数なのかいろんな状況があるわけです。

状況に応じて使う関数も異なります。

スポンサーリンク

the_category()

the_category()はリンク付き+カテゴリーを全て取得します。

<?php the_category(); ?>

吐き出されるhtmlがコチラ

<ul class="post-categories">
  <li>
    <a href="url/category/カテゴリーのスラッグ/" rel="category tag">カテゴリー名A</a>
  </li>
</ul>

その投稿に紐づけられたカテゴリー名をリンク付き全て取得します。

注意としましてはループ内で使用する必要があります。

具体的な例
<?php the_category(); ?>
カテゴリーに「果物」と「色」が取得されている

また( )に’, ‘を入れるとカンマで区切ることができる。

<?php the_category(','); ?>
カンマで区切られている

(‘ ‘)カンマ以外にも/ なども入れられます。

またそれぞれ指定すればスタイリングもできます。

.post-categories{
  display: flex;
  flex-wrap: wrap;
  margin-top: 12px;
}

.post-categories li {
  margin-right: 8px;
  margin-top: 4px;
}

.post-categories li a {
  font-size: 12px;
  border: 1px solid #ddd;
  padding: 4px 6px;
  display: inline-block;
}

get_the_category()

リンクなしカテゴリー +一つのカテゴリーを取得

リンクなしのカテゴリー名を取得する場合はコチラ

<?php $cat = get_the_category(); $cat = $cat[0]; { echo $cat->cat_name; } ?>

囲ってクラス名を付ければ自由にスタイリングができる

具体的な使用例

今回は都合上spanタグで囲っておりますがもちろんpタグとかでも大丈夫です。

<span class="category-label"><?php $cat = get_the_category(); $cat = $cat[0]; { echo $cat->cat_name; } ?></span>
.category-label{
  font-size: 12px;
  display: inline-block;
  border: 1px solid #ddd;
  padding: 4px 6px;
}
スタイリングが効いている

リンクなし+一つだけであればスタイリングも簡単なのでこちらを使う方が楽。

またこちらはリンクなし複数カテゴリーの取得もできる

<?php
  $cats =  get_the_category();
  foreach($cats as $cat) {
    echo '<span>'. $cat->name .'</span>';
  }  
?>
具体的な使用例
<?php
  $cats =  get_the_category();
  foreach($cats as $cat) {
    echo '<span class="category-label">'. $cat->name .'</span>';
  }  
?>

リンクなしのカテゴリーを取得する場合はget_the_category()を使うのが良いかと思います。

get_categories( )

こちらは投稿に付けられているカテゴリーではなくサイトで使用されているカテゴリーを取得することができます。

参考までに

<ul>
  <?php $cats = get_categories(); ?>
  <?php foreach( $cats as $cat ) : ?>
    <li><a href="<?php echo get_category_link( $cat->term_id ); ?>"><?php echo $cat->name; ?></a></li>
  <?php endforeach; ?>
</ul>

まとめ

リンク付き

<?php the_category(); ?>

リンクなし

一つの場合

<span><?php $cat = get_the_category(); $cat = $cat[0]; { echo $cat->cat_name; } ?></span>

複数の場合

<?php
  $cats =  get_the_category();
  foreach($cats as $cat) {
    echo '<span>'. $cat->name .'</span>';
  }  
?>

デザイン性のみのラベルを作成するならget_the_category()を使う方が良いですね!

またカテゴリーに関するものはまだこれからも追記していく予定ですのでお待ちください。

コメント