按模板名称查询WordPress中的页面

时间:2011-10-03 03:52:06

标签: wordpress wordpress-theming

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

3 个答案:

答案 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();

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