【WordPress】スラッグ名からカテゴリーIDを取得する
初めにカテゴリーのスラッグ名からカテゴリーIDを取得する方法をご紹介します。
<?php
// カテゴリーIDの取得
$CategoryID = get_category_by_slug([スラッグ名])->term_id;
?>
具体的には[スラッグ名]の所に、スラッグ名を入れます。
<?php
// 例:スラッグ名が"news"の場合
$CategoryID = get_category_by_slug("news")->term_id;
?>
使う場面としては以下のようなシーンでしょうか
<?php
// カテゴリースラッグ「news」に一致する記事一覧を取得する
$result = new WP_Query(array(
'post_status' => 'publish',
'post_type' => 'post',
'cat' => get_category_by_slug('news')->term_id, // カテゴリー条件で絞り込み
'posts_per_page' => 10,
'orderby' => 'date',
'order' => 'DESC'
));
// サブループ
if ($result->have_posts()): while ($result->have_posts()): $result->the_post();
// 記事表示部分
endwhile; endif;
// サブループをリセット
wp_reset_postdata();
?>
もしくは記事ループ・サブループ内で、特定のカテゴリーの時のみ、何かを表示したい時
<?php
// 記事ループ
if (have_posts()): while (have_posts()): the_post();
// 現在参照中の記事がスラッグ「news」か判別する
if (get_category_by_slug("news")->term_id == get_the_ID()) {
// 現在の記事がスラッグ名「news」と一致する
}
endwhile; endif;
?>
get_category_by_slug()の詳細説明
さて、ここからコードだけじゃなくて、詳しく知りたい人向けです。
上記コードをもう少し分解してみます。
<?php
// カテゴリーデータを取得
$Category = get_category_by_slug("news");
// カテゴリーデータ内のカテゴリ-IDを取得
$CategoryID = $Category->term_id;
// カテゴリーIDを表示
echo $categoryID;
?>
get_category_by_slugは、カテゴリーIDを取得する関数ではなく、カテゴリースラッグに一致するカテゴリーデータを取得するための関数です。
カテゴリーデータは以下のようになっています。
stdClass Object(
term_id,
name,
slug,
term_group,
term_taxonomy_id
taxonomy,
description,
parent,
count,
cat_ID,
category_count,
category_description,
cat_name,
category_nicename,
category_parent
)
この中のterm_idとcat_IDがカテゴリーIDになるので、この値を取得して使っているということになります。
カテゴリーIDをべた書きすることの何がいけないのか?
WordPressのテーマやプラグインを開発していて、カテゴリーIDを取得したい時がありますが、URLからカテゴリーIDを調べて使っていませんか?
確かにそれでも動きます。
しかし、エレガントではありません。
さて、以下のコードを見てください。
<?php if ($category == 5) {
// 何かしらの処理
} ?>
上記のようなコードをチームの誰かが書いていたとしましょう。
『5』ってなんですか!?
プログラム内に謎の数字が表れることを『マジックナンバー』と言います。
記述した人には何の数字かわかっても、他の人にはこの数字が何を意味するのか、すぐにはわかりません。
少し調べればわかることでも、その少しの労力をチームメンバーに強要すべきではありません。
先ほどのコードを第三者にもわかりやすくすると以下のようになります。
<?php if ($category == get_category_by_slug("news")->term_id) {
// 何かしらの処理
} ?>
どうでしょうか?
先ほどは『5』が何かわかりませんでしたが、一目でnewsカテゴリーと比較していることがわかると思います。
このようにチームメンバーに優しいコードを心がけましょう。
私自身カテゴリーIDの取得方法をよく忘れるので、メモ代わりに書いてます。
もしお困りごとがありましたら、お問い合わせフォームよりご相談ください。