キタックCGソリューションセンター

自分で触りたいWeb担のためのTips集

【WordPress】現在のクエリ内容を取得して、いろいろやる

2021年06月23日(水)

PV 18

実装者向けの記事です。

WordPressは、アクセスされたURLに基づいて「クエリ」を発行し、どういう情報を表示するか自動的に決めてくれます。
今回は、「クエリ」の内容を取得し、それを使って処理するときの実装メモです。

「クエリ」について

クエリについて、少し整理します。

「クエリ」とは

データベースへの要求のこと。Wordpressでは、URLに基づいてデータベースにクエリが発行されます。
データベースからは、クエリに基づいた投稿データが返され、所定のテンプレートにデータが書き込まれページが表示されます。

WordPressで構築されたサイトは、トップページや固定ページ、投稿記事ページやカテゴリーアーカイブなど、いくつかの条件下でページが表示されます。

これらの表示を出し分けるのが「クエリ」です。基本的にはアクセスされたURLに基づきクエリが発行され、ページの表示をコントロールします。

get_queried_object_id()

現在のページのクエリを取得するには、この関数が使えます。「get_queried_object_id()」です。
クエリしてるオブジェクトのIDを返してくれます。

例えば、こういうものが取得できます。

  • 固定ページ・・・固定ページのID
  • 投稿記事ページ・・・記事のID
  • カテゴリアーカイブページ・・・カテゴリのID
  • タグアーカイブページ・・・タグのID

実装例:表示中のカテゴリに属する投稿につけられたタグだけ一覧表示

例えばこんな使い方ができます。
ちょっとややこしい例ですが、実装サンプルを。

カスタム分類(タクソノミー)で作った、カテゴリ(ここでは”my_cat”とする)とタグ(ここでは”my_tag”とする)があります。
「my_cat」のアーカイブページで、「my_tag」のリストを表示させたい。
だけど、表示中の記事一覧の中で、どの記事にもついていないタグはリストに表示させたくないのです(ページ送りも考慮しつつ)。

地味ですが、あり得る実装です。

<?php
	// 現在のカテゴリーのIDを取得
	$cat_id = get_queried_object_id();
	// 表示中のカテゴリーに属する投稿のIDを配列で取得
	$current_posts = get_objects_in_term( $cat_id, 'my_cat' );
	// 表示中のカテゴリーに属する投稿に付けられたタグの情報をまとめて取得
	$current_tags = wp_get_object_terms( $current_posts, 'my_tag' );
?>

get_objects_in_term() や wp_get_object_terms() も、使えるwp組込関数ですが、別の機会に説明します。

今回のハイライトは2〜3行目で、$cat_id に現在のカテゴリIDを入れているところ。
それを使って、カテゴリーに属する投稿を取得した上で、それらの投稿につけられたタグのリストを取得しています。間接的に、カスタム分類のカテゴリとタグを紐づけることができました

出力のコードも書いておきます。

<ul>
<?php
	if ( $current_tags ) {
		foreach ( $current_tags as $tag ) {
			echo '<li><a href="' . get_term_link($tag) . '">'. $tag->name . '('. $tag->count . ')</a></li>' . "\n";
		}
	}
?>
</ul>

$current_tags には「表示中のカテゴリーに属する投稿に付けられたタグの情報」が、配列で格納されています。

foreachでループを回して、タグ名($tag->name)と、タグ一覧へのリンク(get_term_link($tag))と、ついでにそのタグが付けられた記事数($tag->count)も取得し出力してます。


Share プリーズ
書き手は私

よろしければどうかご感想を!

この記事のタイトル
【Wordpress】現在のクエリ内容を取得して、いろいろやる
感想を送るノート
お名前必須
メールアドレス必須
ご意見・ご感想必須

ご入力いただいた内容は、当社プライバシーポリシーに基づき厳重に管理いたします。メールの返信以外には使用しません。プライバシーポリシーに同意の上、お進みください。


表示された5文字の英数字を入力してください。

確認画面はありません。
いったんページの上部に戻りますが、問題なく送信されます。

キタックCGSCコアメンバー

  • 樋口大輔
  • 小林将太
  • ちゃんまき
  • 高橋どらみ
  • 高橋皓一
  • 笠井
  • 石本
  • 佐藤サバ美
  • こめ
  • 佐久間尭