2011-10-03 90 views
4

我在“foo.php”中有一个名为“Foo”的模板,我希望能够选择所有使用该模板的页面。我已经搜索了一段时间,但一直没能找到一个成功的方法来做到这一点...有人可以启发我在适当/唯一的方式做到这一点?通过模板名称在WordPress中查询页面

回答

7

您可以通过下面的代码得到这个

$query = new WP_Query(array('meta_key' => '_wp_page_template', 'meta_value' => 'foo.php')); 

if (have_posts()) while (have_posts()) : the_post(); 
<?php the_title(); ?> 
<?php endwhile; // end of the loop. ?> 
+0

如果添加''post_type'=>'page'',这将起作用。谢谢! – nathanjosiah

+0

非常欢迎。 – Robot

+0

,以防万一'等级'=> 0 –

0

机器人的回答是不错的,但我想我会澄清一些事情。

首先,你应该使用变量为您创建的查询,所以这将是$查询 - > have_posts()等

其次,你应该指定post_type。我使用了任何文件,以便除了修订版本之外,它可以提取任何文章类型。

最后,如果这是在任何其他WP循环的页面中,您可能想要使用wp_reset_query。为了以防万一,我在下面加了一个,但是如果你有另一个循环在上面或下面,你只需要这个。如果你不这样删除它。

下面是代码:

wp_reset_query(); 
$query = new WP_Query(array(
    'post_type' => 'any', 
    'meta_key' => '_wp_page_template', 
    'meta_value' => 'foo.php' 
)); 

if ($query->have_posts()) { 
    while ($query->have_posts()) : $query->the_post(); // WP loop 
     the_title(); 
    endwhile; // end of the loop. 
} else { // in case there are no pages with this template 
    echo 'No Pages with this template'; 
} 
wp_reset_query(); 

希望帮助别人!快乐的编码!