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

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

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

それに応じて使う関数も異なります。

スポンサーリンク

1.リンクあり+全てのカテゴリーを取得→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;
}
スポンサーリンク

2.リンクなし→get_the_category()

2-1.リンクなし+1つのカテゴリーを取得

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

<?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;
}
スタイリングが効いている

2-2.リンクなし+全てのカテゴリーの取得

応用にはなりますがリンクなし複数カテゴリーの取得の取得もできます。

<?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>';
  }  
?>

2-3.リンクあり +一つのカテゴリーを取得

リンクあり +一つのカテゴリーを取得したい場合もあると思います。

get_the_categoryではリンクありもできます。

<?php
  $cat = get_the_category();
  if ( $cat[0] ) {
  echo '<a href="' . get_category_link( $cat[0]->term_id ) . '" class="className">' . $cat[0]->cat_name . '</a>';
  }
?>

2-4.リンクあり +全てのカテゴリーを取得

ここまできたらこれもできちゃうんじゃないかということで

<?php
  $cats =  get_the_category();
  foreach($cats as $cat) {
    echo '<span class="card__cat">'.'<a href="' . get_category_link($cat->term_id) . '">' . $cat->name . '</a>'.'</span>';
  }  
?>

できます。

とにかく便利なget_the_category

3.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(); ?>

または

<?php
  $cats =  get_the_category();
  foreach($cats as $cat) {
    echo '<span class="card__cat">'.'<a href="' . get_category_link($cat->term_id) . '">' . $cat->name . '</a>'.'</span>';
  }  
?>

一つのカテゴリー

<?php
  $cat = get_the_category();
  if ( $cat[0] ) {
  echo '<a href="' . get_category_link( $cat[0]->term_id ) . '" class="className">' . $cat[0]->cat_name . '</a>';
  }
?>

リンクなし

一つの場合

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

複数の場合

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

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

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

コメント