用WP_Query查询页面模板


14

我只想查询具有特定页面模板的页面WP_Query或具有可以返回post对象的函数的查询,但是我在官方抄本上找不到任何有关此信息。

Answers:


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 '16

当然,需要元查询。除了它可以是“内联”与meta_keymeta_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
        )
    )
);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.