web-dev-qa-db-ja.com

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

私はWP_Queryまたはpostオブジェクトを返す関数を持つ特定のページテンプレートを持つページだけをクエリしたいのですが、それについての情報は公式のcodexにはありません。

試してみてください...テンプレート名を '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 を使用したり、 query posts を変更して作業を完了させることもできます。これらの関数は両方とも WP_Query と同じパラメーターを使用します。

16

間違っている:ワードプレス3の時点であなたはに似た何かが必​​要です:

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

ページテンプレートは、キー "_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

1
anmari

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

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

私はtemplates-map/component-tutorial-1.phpを使いました、そしてそれは働きました。

0
Ivan Gomes