2010-04-08 56 views
3

我試圖實現的是僅顯示循環中的特定頁面。 3頁某些頁面,不多,不少。在Wordpress中顯示WP_Query的某些頁面的數組

我已經嘗試了很多東西,但我無法完成它。

<?php 
    $special_tabs = new WP_Query(array ('post_type'=>'page','post__in'=>array(100,102,104))) 
?> 

這樣做,據我所知,它顯示了一個頁面的數組,然後在那裏包含這些ID。

<?php 
    $special_tabs = new WP_Query('page_id=100'); 
?> 

而這隻顯示一個確定的頁面,它不支持顯示不同ID的數組。

我敢肯定,我不是第一個有這種特定需求的人,我確信有一個相對簡單的方法來實現我想要達到的目標,但我不能拿出一個解決方案或找到一個。任何人都可以幫助我嗎?

非常感謝提前!

+0

這個具體解決方案的答案很簡單:我在那裏有一個錯字: 我有post_in,但實際上它是post_in,兩個下劃線。我錯過了。 我最好保持睜大眼睛。 – Ragnar 2010-04-08 12:03:16

回答

1

只是想知道使用get_pages()而不是創建新的wp_query()會更好嗎?

使用這小小的一段代碼就可以生成你想要的頁面列表..

<ul> 
<?php $special_tabs = get_pages ('sort_column=post_title&echo=0&include=2,3,4&title_li='); ?> 
<?php 
foreach ($special_tabs as $tab) { 
    $title = $tab->post_title; 
    echo "<li>".$title."</li>"; 
} 
?> 
</ul> 

如果你在$ special_tab變量的print_r你會得到下面的數組

</php 
echo"<pre>"; 
echo print_r($special_tabs); 
echo"</pre>"; 
?> 


    Array 
(
    [0] => stdClass Object 
     (
      [ID] => 2 
      [post_author] => 1 
      [post_date] => 2010-03-24 15:26:18 
      [post_date_gmt] => 2010-03-24 15:26:18 
      [post_content] => This is an example of a WordPress page. 
      [post_title] => About 
      [post_excerpt] => 
      [post_status] => publish 
      [comment_status] => open 
      [ping_status] => open 
      [post_password] => 
      [post_name] => about 
      [to_ping] => 
      [pinged] => 
      [post_modified] => 2010-03-24 15:26:18 
      [post_modified_gmt] => 2010-03-24 15:26:18 
      [post_content_filtered] => 
      [post_parent] => 0 
      [guid] => http://example.com/about/ 
      [menu_order] => 0 
      [post_type] => page 
      [post_mime_type] => 
      [comment_count] => 0 
      [filter] => raw 
     ) 

    [1] => stdClass Object 
     (
      [ID] => 3 
      [post_author] => 1 
      [post_date] => 2010-03-27 10:48:29 
      [post_date_gmt] => 2010-03-27 10:48:29 
      [post_content] => 
      [post_title] => testpage1 
      [post_excerpt] => 
      [post_status] => publish 
      [comment_status] => open 
      [ping_status] => open 
      [post_password] => 
      [post_name] => testpage1 
      [to_ping] => 
      [pinged] => 
      [post_modified] => 2010-03-27 10:48:29 
      [post_modified_gmt] => 2010-03-27 10:48:29 
      [post_content_filtered] => 
      [post_parent] => 0 
      [guid] => http://example.com/testpage1/ 
      [menu_order] => 0 
      [post_type] => page 
      [post_mime_type] => 
      [comment_count] => 0 
      [filter] => raw 
     ) 

    [2] => stdClass Object 
     (
      [ID] => 4 
      [post_author] => 1 
      [post_date] => 2010-03-27 10:56:26 
      [post_date_gmt] => 2010-03-27 10:56:26 
      [post_content] => 
      [post_title] => testpage2 
      [post_excerpt] => 
      [post_status] => publish 
      [comment_status] => open 
      [ping_status] => open 
      [post_password] => 
      [post_name] => testpage2 
      [to_ping] => 
      [pinged] => 
      [post_modified] => 2010-03-27 10:56:26 
      [post_modified_gmt] => 2010-03-27 10:56:26 
      [post_content_filtered] => 
      [post_parent] => 0 
      [guid] => http://example.com/testpage2/ 
      [menu_order] => 0 
      [post_type] => page 
      [post_mime_type] => 
      [comment_count] => 0 
      [filter] => raw 
     ) 

) 

希望這是你可以使用.. :) 只記得包括您的頁面ID的get_pages()包括部分,而不是2,3,4多數民衆贊成他們已經...

REF:http://codex.wordpress.org/Function_Reference/get_pages

+0

非常感謝,Marty。它絕對看起來工作。但我認爲創建wp_query似乎比您提供的解決方案容易一些。但我仍然非常感謝您的幫助。每當我對頁面進行操作時,我都會記住這個解決方案。 事情是,我需要在幾個不同的地方顯示幾個頁面。其中之一是special_tabs部分,我有2-3個其他地方。 – Ragnar 2010-04-08 12:06:37

0

這裏是2+個月大的問題的答案:

你想顯示某些頁面,以在foreach呼籲WP_Query每個頁面,這樣怎麼樣:

$certain_pages = array(100,102,104); 
foreach($certain_pages as $a_page) { 
    $special_tabs = new WP_Query('page_id='.$a_page); 
    /* (sample) loop goes here */ 
    if ($special_tabs->have_posts()) : while ($special_tabs->have_posts()) : $special_tabs->the_post(); 
     the_content(); 
    endwhile; endif; 
    /* loop ends */ 
} 

不用擔心多次調用循環,即使在這種規模下也無法察覺到這種效果。