我在“foo.php”中有一个名为“Foo”的模板,我希望能够选择使用该模板的所有页面。我已经搜索了一段时间,但是还没有找到一个成功的方法来做到这一点...有人可以通过正确/唯一的方式来启发我吗?
答案 0 :(得分: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. ?>
答案 1 :(得分:5)
这也有效
$pages = get_pages(
array(
'meta_key' => '_wp_page_template',
'meta_value' => 'template.php'
)
);
foreach($pages as $page){
echo $page->post_title.'<br />';
}
http://jorgepedret.com/old/web-development/get-pages-by-template-name-in-wordpress/
答案 2 :(得分:3)
机器人的答案很好,但我想我澄清了一些事情。
首先,您应该为您创建的查询使用该变量,因此它将是$ query-&gt; 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();
希望有人帮助!!快乐的编码!