カテゴリーアーカイブページ(カテゴリー一覧ページ)でカテゴリーIDやスラグなどの情報を取得したいができないといったことはないでしょうか?
archive.phpやcategory.phpなどのテンプレートで現在開いているカテゴリーアーカイブページのカテゴリーIDやスラグなどの情報を取得したい場合、投稿のカテゴリーを取得するための関数get_the_category()だけではこの情報を取得することができません。
そこで今回はカテゴリー一覧を開いている時、投稿からカテゴリ情報を取得するのではなく、直接カテゴリーIDやスラグを取得する方法をご紹介いたします。
直接カテゴリ一覧のカテゴリーIDを取得する方法
カテゴリー名を取得するだけならカテゴリー名をページタイトルとして表示させるsingle_cat_title()という関数があるのですが、直接カテゴリーのIDやスラッグは取得できません。カテゴリー名からIDやスラッグを間接的に取得する方法も考えられますが、もしカテゴリー名が同じでIDが異なるカテゴリーが存在した場合は正しい結果を得ることできないかもしれません。
今開いているカテゴリーのIDやスラッグなどの情報を取得するにはget_query_var()という関数が便利です。
この関数を使えば直接カテゴリーのIDやスラッグを取得することができるので正し情報を確実に受け取ることができます。
<?php
//カテゴリーアーカイブページでカテゴリーIDを取得
$cat_id = get_query_var('cat');
//カテゴリーアーカイブページでカテゴリースラッグを取得
$cat_slug = get_query_var('category_name');
?>
カテゴリーIDが判別できるとget_category()にこの情報を渡すことで、カテゴリー名などの情報も取得することも可能です。
<?php //先ほど取得したカテゴリーIDをget_category()に渡す $cat = get_category($cat_id); //カテゴリーアーカイブページのカテゴリー名 $cat_names = $cat->cat_name; ?>
get_query_var()で取得できるページ情報
せっかくなのでカテゴリーアーカイブ以外でもアーカイブテンプレートで使いそうなものを少しご紹介したいと思います。
<?php
//年別アーカイブ(年を取得)
get_query_var('year');
//月別アーカイブ(月を取得)
get_query_var('monthnum');
//投稿タイプアーカイブ(投稿タイプ名)
get_query_var('post_type');
//タクソノミーアーカイブ(タクソノミー名)
get_query_var('taxonomy');
//タクソノミーアーカイブ(ターム名)
get_query_var('term');
//タグアーカイブ(タグスラッグ)
get_query_var('tag');
//ユーザーアーカイブ(ユーザーID)
get_query_var('author');
//ユーザーアーカイブ(ユーザー名)
get_query_var('author_name');
//検索結果(検索ワード)
get_query_var('s');
//ページネーション2ページ名以降のページ番号
get_query_var('paged');
?>
個別の記事からカテゴリーIDやスラグを取得する場合
個別の記事からカテゴリーIDやスラグを取得する方法は、「【WordPress】個別ページ(single.php)でカテゴリー情報を取得する方法」で紹介しておりますので是非こちらもご確認ください。