WordPressのテーマやプラグイン開発において、投稿タイプを取得する際に使用される関数として、get_query_var()
とget_post_type()
があります。これらの関数は似ているようで、取得する情報や使用する場面が異なります。本記事では、それぞれの関数の特徴と使い分けについて詳しく解説します。
get_query_var()とは
get_query_var()
は、現在のクエリから指定した変数の値を取得する関数です。主にURLのクエリパラメータや、WordPressの内部クエリ変数を取得する際に使用されます。
特徴
- URLクエリパラメータや内部クエリ変数を取得できる。
- アーカイブページや検索結果ページなど、クエリの状態を確認するのに便利。
- カスタムクエリやリクエストのカスタマイズ時に活用される。
使用例
$post_type_query_var = get_query_var('post_type');
echo $post_type_query_var; // 例: 'post' や 'staff' など
注意点
get_query_var('post_type')
は、クエリに基づく投稿タイプを取得しますが、現在表示中の投稿の投稿タイプとは限りません。特にアーカイブページや検索ページでは、期待する値が得られない場合があります。
get_post_type()とは
get_post_type()
は、現在表示中の投稿の投稿タイプを取得する関数です。主にシングルページやループ内で使用されます。
特徴
- 現在表示中の投稿の投稿タイプを取得できる。
- シングルページやループ内での使用が一般的。
- 投稿タイプに応じた処理を行う際に便利。
使用例
$post_type = get_post_type();
echo $post_type; // 例: 'post' や 'staff' など
注意点
get_post_type()
は現在の投稿の投稿タイプを返すため、アーカイブページや検索ページでは期待する動作をしない場合があります。
get_query_var()とget_post_type()の違い
関数名 | 取得対象 | 使用場面 |
---|---|---|
get_query_var() | クエリ変数(例: ‘post_type’) | アーカイブページ、検索結果ページ、カスタムクエリ |
get_post_type() | 現在の投稿の投稿タイプ(スラッグ) | シングルページ、ループ内 |
使用例の比較
アーカイブページでの使用(get_query_var)
if (get_query_var('post_type') === 'staff') {
echo 'スタッフのアーカイブページです';
}
シングルページでの使用(get_post_type)
if (get_post_type() === 'staff') {
echo 'この投稿はスタッフの投稿タイプです';
}
まとめ
- 現在の投稿の情報を取得したい場合は、
get_post_type()
を使用します。 - クエリ全体の状態やURLの情報を取得したい場合は、
get_query_var()
を使用します。
これらの関数を適切に使い分けることで、WordPressサイトの機能をより柔軟にカスタマイズできます。