説明
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

コメント