特定のページテンプレートをWP_Query
含むページ、または投稿オブジェクトを返す関数を含むページのみをクエリしたいのですが、公式コーデックスでその情報を見つけることができません。
特定のページテンプレートをWP_Query
含むページ、または投稿オブジェクトを返す関数を含むページのみをクエリしたいのですが、公式コーデックスでその情報を見つけることができません。
回答:
これを試してください...テンプレート名が 'my_template.php'であると仮定して、
$query = new WP_Query(
array(
'post_type' => 'page',
'meta_key' => '_wp_page_template',
'meta_value' => 'my_template.php'
)
);
//Down goes the loop...
get_postsを使用するか、クエリの投稿を変更して、ジョブを完了させることもできます。これらの関数は両方ともWP_Queryと同じパラメーターを使用します。
不正解:wordpress 3以降、次のようなものが必要です。
$args = array(
'post_type' => 'page',
'meta_query' => array(
array(
'key' => '_wp_page_template',
'value' => 'my_template.php'
)
)
);
post_type
です。それ以外の場合はmeta_query
、単一のカスタムキー/値ペアの配列は必要ありません。
meta_key
及びmeta_value
又は複数の条件を含むことができる普通の配列を有します。
ページテンプレートは、キー "_wp_page_template"を持つメタ値として保存されます。
したがって、必要なのはそのキーをメタクエリパラメータで使用することだけです。例えば
http://codex.wordpress.org/Displaying_Posts_Using_a_Custom_Select_Query#Query_based_on_Custom_Field_and_Sorted_by_Valueを参照してください
および http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters
誰かが誤って投稿した結果、投稿がゼロになった場合は、おそらくテンプレート名が間違っています。私はphpファイル名とテンプレート名を試しましたが、うまくいきませんでした。次に、ページエディターでテンプレートを選択するテンプレート選択ボックスを調べることにしました。私はこれを見つけました:
<option value="templates-map/component-tutorial-1.php"
selected="selected">Tutorial -1</option>
私が使っtemplates-map/component-tutorial-1.php
てみました。