トップへ戻る
BLOGS

WordPress メインクエリの情報を取得してくる

WordPress メインクエリの情報を取得してくる

WordPressの会話や記事の中で時折目にするキーワード「メインクエリ」とは簡単に言うところの、記事の問い合わせ情報です これは現在表示しているページ、例えば固定ページなのか投稿ページ7日、あるいは検索ページなのかそのページによってWordPressはデータベースに問い合わせる情報が異なっているということです

この「メインクエリ」の情報を取得してくることができれば、
categoryなどのタクソノミーページなどで表示しているページによって情報が変化するターム名などを動的に取得できるということで、オリジナルテーマを作成している場合など、テンプレートファイル一枚で全てのタクソノミーやタームを出し分ける事ができるため、ハードコーディングを避ける技術として必須となっております

クエリ情報を取得する関数

はい!

$oja_slug = get_query_var('$var,$default');

get_query_var()は表示しているページによって取得できる情報が変わる便利そうな関数となっていて、第一引数$varでどの情報を取得するか変数キーなるもので指定をする。

第2引数$defaultは指定した情報が取得できなかった際の返り値を指定します。初期値はなし。

そして指定するキーですがわかりやすくまとめてくださっていた方のを引用します。

有効な変数キー
投稿ページ‘p’ *1‘name’ *2‘year’ *3
‘monthnum’ *3
‘day’ *3
投稿ID投稿スラッグ投稿年
投稿月
投稿日
固定ページ‘p’ *1
‘page_id’ *1‘name’ *2
‘pagename’ *2
投稿ID
固定ページIDページスラッグ
ページスラッグ
カスタム投稿ページ‘p’ *1’name’ *2’post_type’投稿IDページスラッグ投稿タイプ
年別アーカイブ‘year’
月別アーカイブ‘year’
‘monthnum’

日別アーカイブ‘year’
‘monthnum’
‘day’


カテゴリーアーカイブ‘cat’
‘category_name’
カテゴリーID
カテゴリースラッグ
タグアーカイブ‘tag’タグスラッグ
タクソノミーアーカイブ‘taxonomy’
‘term’
タクソノミー名
ターム名
カスタム投稿 – アーカイブ‘post_type’投稿タイプ名
作成者アーカイブ‘author’
‘author_name’ *4
ユーザーID
ユーザー名
アーカイブの2ページ目以降‘paged’ページ番号
固定ページの2ページ目以降‘page’ページ番号
検索結果ページ‘s”post_type’検索ワード’any’がセットされている
*1 パーマリンク構造に ?p= や 投稿ID が入っている時のみ有効。
*2 パーマリンク構造にスラッグが入っている時のみ有効。
*3 パーマリンク構造に日付が入っている時のみ有効。
*4 パーマリンク構造に投稿者名が入っている時のみ有効。
 
また上記以外では、基本的に全てのページで'order' キーには文字列'DESC'が入っています。

すごく種類があり、覚えられないので事あるごとにこのページに戻って来ます。

まとめてくださった方に感謝。

categoryなどからタームを取得する

ここからようやく本題です
取得した情報をタクソノミーページで出力します。
以下がその全文の一例です

<?php
$oja_slug = get_query_var('oja_cat');
$oja_cat = get_term_by('slug',$oja_slug,'oja_cat'); ?>
<h3 class="text">「<?php echo $oja_cat->name; ?>」の記事</h3>

タクソノミー名をキーに情報を取得

まずは関数を使用し引数にタクソノミーのスラッグを渡して現在のクエリパラメータを取得します

$oja_slug = get_query_var('oja_cat');

「oja_cat」というタクソノミーから変数に情報を格納する。

メインクエリの情報からターム情報を取得する

$oja_cat = get_term_by('slug',$oja_slug,'oja_cat'); ?>

get_term_by()はまた別に記事にしようと考え中です。

この関数は第一引数に投稿のslugを指定し、タクソノミー「oja_cat」から先程取得したメインクエリの情報を検索し取得します。

配列からキーで取り出してechoして出力

<h3 class="text">「<?php echo $oja_cat->name; ?>」の記事</h3>

これでタクソノミーページ(カテゴリー検索)でページごとに検索したカテゴリー、タグの名前が表示できました。

コメントをお待ちしております

お気軽にコメントをどうぞ。

CAPTCHA