WordPress開発を行っていると、現在表示されているカテゴリーアーカイブのカテゴリー情報を知りたい時ってありませんか?

このように現在のページの情報を取得したいことって割りと多いんですよね。

当記事では、この情報を取得できる関数「get_queried_object()」の使い方について解説していきます。

get_queried_object()とは?

現在表示されているページのクエリ情報を取得できる関数です。例えば、どの投稿のページなのか?どのカテゴリーのアーカイブなのか?などを知りたい時に使います。

get_queried_object();

この関数で取得できる情報は、投稿やカテゴリー、ユーザーなどのオブジェクトになります。クエリによって異なるので、ページ毎にみていきましょう。

get_queried_object()で取得できる情報

各種ページで取得できる情報を以下の表にまとめました。それぞれ順番にご紹介していきます。

トップページ(最新の投稿) NULL(取得できる情報無し)
トップページ(固定ページ) WP_Post(固定ページの情報)
投稿アーカイブ WP_Post(固定ページの情報)
投稿タイプ個別ページ WP_Post(投稿情報)
投稿タイプアーカイブ WP_Post_Type(投稿タイプの情報)
タクソノミーアーカイブ WP_Term(タクソノミー情報)
著者アーカイブ WP_User(ユーザー情報)
その他ページ NULL(取得できる情報無し)

トップページ

トップページは、表示設定で「最新の投稿」か「固定ページ」を選んでいるかによって取得できる内容が異なります。

最新の投稿 NULL(取得できる情報無し)
固定ページ WP_Post(選択中の固定ページの情報)

「最新の投稿」を選択している場合は、何も取得できませんが、「固定ページ」選択時は、その固定ページの情報を取得できます。

投稿アーカイブ

表示設定で「固定ページ」を選択すると「投稿ページ」に指定した固定ページが投稿のアーカイブページになります。この時取得できるのは、その固定ページの情報(WP_Post)になります。

投稿、固定ページ、カスタム投稿の個別ページ(添付ファイルページ)

各投稿タイプの個別ページで取得できるのは、そのページの情報(WP_Post)になります。こちらに関しては「get_the_ID()」や「get_post()」でも基本的な情報を取得できるので、get_queried_object()を使うケースは少ないですね。

添付ファイルページで取得できるのは、添付ファイルの情報が格納されたWP_Postオブジェクトになります。

カスタム投稿アーカイブ

カスタム投稿のアーカイブページでは、その投稿タイプの登録情報(WP_Post_Type)を取得できます。「register_post_type()」でカスタム投稿を登録した時の情報ですね。

利用機会が少ないですが、いま表示されている投稿タイプアーカイブのカスタム投稿の識別名称などを知りたい時に使えそうです。

// クエリ情報を取得
$queried_object = get_queried_object();

// カスタム投稿の識別名称
$name = $queried_object->name;

// カスタム投稿の名前(ラベル)
$label = $queried_object->label;

カテゴリー、タグ、カスタムタクソノミーアーカイブ

最も利用するケースが多いのは、カテゴリーなどの各タクソノミーアーカイブです。ここでは、そのページのタクソノミーの情報(WP_Term)を取得できます。

基本情報は以下の記述でアクセスできます。

// クエリ情報を取得
$queried_object = get_queried_object();

// タクソノミー名
$taxonomy = $queried_object->taxonomy;

// ID
$term_id = $queried_object->term_id;

// 名前
$name = $queried_object->name;

著者アーカイブ

著者アーカイブでは、著者(ユーザー)の情報(WP_User)を取得できます。こちらもタクソノミーアーカイブと同様に利用する機会は多いです。

例えば、以下のような情報にアクセスできるので、著者ページにプロフィールを設置する時などに便利です。

// クエリ情報を取得
$queried_object = get_queried_object();

// ユーザーID
$user_id = $queried_object->ID;

// メールアドレス
$user_email = $queried_object->user_email;

// ブログ上の表示
$display_name = $queried_object->display_name;

日付アーカイブ、検索結果ページ、404ページ

これらのページで取得できる情報は無いため、「NULL」を返します。

まとめ

今回は、「get_queried_object()」を使って各クエリの情報を取得する方法について解説しました。ある程度の情報であれば、この関数で取得できますので、必ず覚えておきましょう。

また、セットで使いたいのが、これらのページを判別するWordPressの条件分岐タグです。以下に表でまとめてますので、ぜひセットでお使いください。