概要
get_queried_object
関数は、現在のクエリに基づいて、ページリクエストにマッチした情報を取得するために使用される関数です。この関数は、さまざまなWordPressのコンテキストで役立ちます。以下は、get_queried_object
関数がどのような機能を実装する際によく使われる例です。
- カスタム投稿タイプの詳細を取得する
- 特定のターム情報(例:カテゴリーやタグ)を取得する
- 複数のクエリ条件に基づくオブジェクト情報を取得する
- 現在表示している作者の情報を取得する
- 固定ページの詳細を取得する
- 投稿が属するカテゴリーリストを取得する
- WooCommerceの製品詳細を取得する
- ショートコード内で現在の投稿情報を取得する
この関数は、主に以下のようなコンテキストで使用されます。
- 投稿、ページ、ターム、ユーザーなどの詳細情報を取得する必要がある場合。
- テンプレートファイル内で現在のクエリの情報を操作する際。
構文
get_queried_object();
パラメータ
この関数は、パラメータを受け取らない仕様です。
戻り値
- クエリされたオブジェクトの情報が含まれたオブジェクト(例: WP_Post, WP_Term, WP_Userなど)
- 該当するオブジェクトがない場合は
null
が返される。
関連する関数
使用可能なバージョン
この関数は、WordPress 3.1.0 以降で使用可能です。
コアファイルのパス
wp-includes/query.php
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | 〇 |
pre_get_posts | 〇 |
wp | 〇 |
template_redirect | 〇 |
get_header | |
wp_head |
この関数は特定のバージョンで非推奨や削除された例はありません。
サンプルコード
サンプルコード 1: カスタム投稿タイプの取得
if ( is_singular( 'custom_post_type' ) ) {
$queried_object = get_queried_object();
echo 'Current post title: ' . $queried_object->post_title;
}
このコードは、現在のクエリがカスタム投稿タイプであれば、その投稿のタイトルを表示します。
サンプルコード 2: タームの詳細取得
if ( is_tax() ) {
$queried_term = get_queried_object();
echo 'Current term name: ' . $queried_term->name;
}
このコードは、現在のクエリがタームのものであれば、そのタームの名前を表示します。
サンプルコード 3: 現在のユーザー情報の取得
if ( is_author() ) {
$queried_user = get_queried_object();
echo 'Current author: ' . $queried_user->display_name;
}
このコードは、現在のクエリが著者のものであれば、その著者の表示名を表示します。
サンプルコード 4: 固定ページ情報の表示
if ( is_page() ) {
$queried_object = get_queried_object();
echo 'Current page content: ' . $queried_object->post_content;
}
このコードでは、現在表示されている固定ページの内容を取得し、表示します。
サンプルコード 5: 複数の投稿条件のフィルタリング
add_action( 'pre_get_posts', function( $query ) {
if ( $query->is_main_query() && !is_admin() ) {
$post_object = get_queried_object();
// 何かの条件に基づいて投稿取得を変更
}
});
このコードは、メインクエリに対して特定の条件に基づくフィルタリングを行うためにget_queried_object
を使用しています。