2011-10-03 84 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(); 

希望幫助別人!快樂的編碼!