この記事では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()を使う方が良いですね!
またカテゴリーに関するものはまだこれからも追記していく予定ですのでお待ちください。
コメント