get_queried_object() の使い方|説明・引数・注意点

説明

get_queried_object() は、現在のリクエストが指しているオブジェクト(投稿・ターム・ユーザーなど)を返す関数です。

基本構文

get_queried_object(): WP_Post|WP_Term|WP_User|WP_Post_Type|null

引数

引数はありません。

戻り値

ページの種類に応じたオブジェクト。

使い方(サンプル)

if ( is_category() ) {
	$cat = get_queried_object();
	var_dump( $cat->name );
}

注意点

  • ページの種類によって戻り値の型が違うため、使う前に is_*() で判定します。
  • メインクエリが決まった後(wp フック以降)でないと取得できません。

実務での使いどころ

  • カテゴリーやタグのアーカイブで、現在のタームの情報を取得するとき。
  • 投稿タイプのアーカイブで、投稿タイプの情報を取得するとき。
  • 個別ページで、表示中の投稿のオブジェクトを取得するとき。

よくあるミスと対処

  • 戻り値の型が、ページによって違うことを考えていない(ターム、投稿、投稿タイプ、ユーザーなど)。
  • メインクエリが対象のオブジェクトを持たないページでは、null になる場合がある。確認せずにプロパティへアクセスする。
  • ループ中の投稿だと思っている。ループ中の投稿は $post、これは「表示中のページ」が対象。

NG例

$obj = get_queried_object();
echo $obj->name; // ページによっては、プロパティが無い

OK例

$obj = get_queried_object();
if ( $obj instanceof WP_Term ) {
	echo esc_html( $obj->name );
}

使い分け早見表

取得したいもの 使うもの
表示中のページのオブジェクト get_queried_object()
そのID get_queried_object_id()
ループ中の投稿 get_post()

関連項目

get_queried_object_id()、is_category()

公式リファレンス:get_queried_object() | Function | WordPress Developer Resources

コメント

タイトルとURLをコピーしました