WP_Queryを使用したページテンプレートクエリ


14

特定のページテンプレートをWP_Query含むページ、または投稿オブジェクトを返す関数を含むページのみをクエリしたいのですが、公式コーデックスでその情報を見つけることができません。

回答:


23

これを試してください...テンプレート名が '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と同じパラメーターを使用します。


20

不正解:wordpress 3以降、次のようなものが必要です。

$args = array(
    'post_type'  => 'page', 
    'meta_query' => array( 
        array(
            'key'   => '_wp_page_template', 
            'value' => 'my_template.php'
        )
    )
);

ありがとうございました!!受け入れられた答えを使用して、このページを速すぎてすくい取りました。これはそれを行います。他の人のために、配列内の配列に注意してください...
Jeremy Carlson

3
ここでの唯一の違いはpost_typeです。それ以外の場合はmeta_query、単一のカスタムキー/値ペアの配列は必要ありません。
Rutwick Gangurde 2016年

もちろんメタクエリが必要です。それと「インライン」であってもよい除く外meta_key及びmeta_value又は複数の条件を含むことができる普通の配列を有します。
Maxime Culea


0

誰かが誤って投稿した結果、投稿がゼロになった場合は、おそらくテンプレート名が間違っています。私はphpファイル名とテンプレート名を試しましたが、うまくいきませんでした。次に、ページエディターでテンプレートを選択するテンプレート選択ボックスを調べることにしました。私はこれを見つけました:

<option value="templates-map/component-tutorial-1.php" 
 selected="selected">Tutorial -1</option>

私が使っtemplates-map/component-tutorial-1.phpてみました。


0

テンプレートが別のフォルダー内にある場合:

$args = array(
    'post_type' => 'page', //it is a Page right?
    'post_status' => 'publish',   
    'meta_query' => array(
        array(
            'key' => '_wp_page_template',
            'value' => 'page-templates/template-name.php', // folder + template name as stored in the dB
        )
    )
);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.