Blog

WordPressのループ外でカテゴリーページのURLを取得する方法

2017.11.27 2020.10.25 WordPress

WordPressシングルページでカテゴリーページへのリンクを取得する場合、ループ内であればthe_categoryというテンプレートタグを使えば大丈夫です。

しかしループ外でカテゴリーページへリンクしたい場合には、以下のような形でカテゴリーページURLを取得する必要があります。

PHP
<?php
	$cat = get_the_category(); //現在のページのカテゴリ―を取得
	$cat_id = $cat[0]->cat_ID; //取得したカテゴリーのIDを取り出す
	$cat_link = get_category_link($cat_id); //取り出したカテゴリーIDをget_category_linkに指定
	echo $cat_link; //指定したカテゴリーページのURLを出力
?>

get_the_categoryとget_category_link

使用しているのはget_the_categoryget_category_linkという2つのテンプレートタグです。

get_the_categoryは現在のシングルページが属するカテゴリーの配列を返すもので、投稿IDを渡すことでループ外でも使うことができます。

あまりないかもしれませんが、ある投稿(シングルページ)で別の投稿IDを渡せば、その別の投稿の属するカテゴリーURLを取得することができるようになっています。

get_category_linkは、カテゴリーIDを指定することでそのカテゴリーのURLを返すテンプレートタグです。

上で紹介したコードでは、まずget_the_categoryで現在のページが属するカテゴリーの情報を取得し、そこからカテゴリーIDを取り出す。

次に取り出したカテゴリーIDをget_category_linkで指定することでカテゴリーページURLを出力しているというような流れです。

出力するのはあくまでもURLだけですので、実際リンクするときには下記のような感じになります。

PHP
<a href="&lt;?php
	$cat = get_the_category(); //現在のページのカテゴリ―を取得
	$cat_id = $cat[0]-&gt;cat_ID; //取得したカテゴリーのIDを取り出す
	$cat_link = get_category_link($cat_id); //取り出したカテゴリーIDをget_category_linkに指定
	echo $cat_link; //指定したカテゴリーページのURLを出力
?&gt;"></a>