ホームページ制作アトリエ

心えがおホームページ制作 atelier(アトリエ)は、ホームページ・動画制作、教育ICT・アプリ開発、名刺・ポスター・チラシの作成を行っております。

変数$wap_query

カテゴリー:variable
カテゴリーアーカイブページの情報を格納している変数です。
前回同様に、今度はget_queried_object関数を利用して$wap_queryが持つ情報を取得していきます。パラメータはありません。
必要なデータが格納されているのかを調べる
今回もprint_r関数を使ってオブジェクトの情報を確認してみましょう。
get_queried_objectで取得したオブジェクトを$catという変数に入れてみました。
header.phpの最後に追加することで、$cateの中にオブジェクトとして現在表示されているカテゴリーの詳細情報が格納されている事がわかります。
この場合、get_queried_object関数が返すオブジェクトのプロパティ名は
[cat_name]・・・カテゴリー名
[cat_ID]・・・ID
[parent]・・・親カテゴリーID
だという事が分かりました。
親カテゴリーがあるかどうか調べる
ここではPHPの基本構文「比較演算子」を使います。
親カテゴリーがあるかどうかを調べるには、プロパティに働きかけなければいけません。
今回働きかけるプロパティ名は[parentプロパティ]です。
値には整数が格納されています。0の場合は親がないということになっています。
では、これをコード化してみましょう。 最後の一行は、現在表示されているカテゴリー名を表示します。
<?php echo $cat -> cat_name; ?>
今回は既に取得した$catの[cat_nameプロパティ]にカテゴリー名が格納されているので、この記述にしましたが、実はWordpressには、現在表示されているカテゴリー名を出力するテンプレートタグも用意されています。

single_cat_title

…現在のページのカテゴリー名を出力。カテゴリーページ以外では無効
カテゴリーの先祖を取得する
ここではget_ancestors関数を使って、まとめて取得することにしました。

get_ancestors

…先祖となる要素のIDを配列にして取得します。

今回はカテゴリーの先祖を取得したいので・・・
$ancestors = get_ancestors( $cat -> cat_ID, ‘category’ );
こうすると、$ancestorsという変数(配列)に先祖カテゴリーのIDが格納されます。
さらに今回はパンくずリストなのでPHPのarray_reverse関数を使って順番を逆にします。
$ancestors = array_reverse(get_ancestors( $cat -> cat_ID, ‘category’ ));
では、ここまでをまとめてみましょう。
↑の意味は、「もし表示中のカテゴリーに親カテゴリーがあるならば、先祖カテゴリーのIDを逆さにして$ancestorsという配列にする」という意味です。
あとは配列に格納されている先祖カテゴリーのIDを利用し、カテゴリー名とリンクを作成するためのURLを取得するだけですね。
カテゴリー名とURLを取得する
ここではPHPの基本構文「foreach文」を使います。

get_cat_name

…カテゴリーのIDから、カテゴリーの名前を取得します。
書式get_cat_name( $cat_id )
パラメータ整数が入ります。初期値はなし。

get_category_link

…指定したカテゴリー ID の正しい URL を PHP の値として返します。
書式get_category_link( $category_id )
パラメータ整数が入ります。初期値はなし。
これらの関数を使って書くとこうなります。 変数$ancestorには繰り返し処理ごとに$ancestorsに格納されていたIDが代入されます。
一番上の先祖カテゴリーから順番に、<li>要素のリストとして出力されるという仕組みがこれで完成しました。