我在” foo.php”中有一个名为” Foo”的模板, 我希望能够选择所有使用该模板的页面。我已经搜索了一段时间, 但没有找到一种成功的方法来做…有人能以正确/唯一的方式启发我吗?
#1
你可以使用以下代码来获取
$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. ?>
#2
这也有效
$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/
#3
机器人的回答很好, 但是我想我要澄清一些事情。
首先, 你应该对创建的查询使用变量, 因此它将是$ query-> have_posts()等。
其次, 你应该指定post_type。我使用了any, 因此它将拉除修订版以外的所有帖子类型。
最后, 如果该页面位于具有任何其他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();
希望对某人有帮助!!编码愉快!
评论前必须登录!
注册