termのIDをカテゴリー・カスタムタクソノミー問わずアーカイブ表示時に取得する
カテゴリーアーカイブやカスタムタクソノミーのアーカイブを問わずにそのアーカイブが表示されているときにtermのIDを取得するためのメモ書き。
先ほどそれを実際に書いたので、同じことがあったときのために念のためにコードを残しておくことにする。
ちなみにこれは既に出尽くしている情報ではあるし、他のサイトさんのほうが派生も含めて詳しく書かれていたりするから、わざわざここで見る必要もない情報ではある。
カテゴリーを含めて個別のタクソノミーのテンプレート毎でも使えるようにfunctions.phpに入れる。
グローバル変数の$wp_queryより参照できるqueried_objectのメソッドを利用して以下のように記述。
function theme_get_single_term_id() { global $wp_query; return $wp_query->queried_object->term_id; }
これだけで、カテゴリーアーカイブでもカスタムタクソノミーアーカイブでも、
theme_get_single_term_id();
とやってあげれば、取得できる。
ここからはWPに触れて日の浅い方のための補足。
使い所としては、例えば、get_termで当該のアーカイブのタクソノミーの情報を取得したいとき・・・というかまんまこのとき。
get_term( theme_child_get_single_term_id(), 'category' );
上記はタクソノミーのタイプが’category’、即ちカテゴリーアーカイブのときの例。
‘category’の部分もテンプレートを問わずにより汎用的に行うなら、$wp_queryのどっか(忘れたけど)でtermのIDよろしくtaxnomyが取得できるので、同じような形で別の関数名に登録しといてあげるといいかも。