2016-10-28 24 views
1

我創建了一個帖子循環,顯示2種不同類型的帖子('portfolio'和'post')。爲多個帖子循環指定'post_per_page'

<?php 

    $work = array(
     'post_type' => array('portfolio','post'), 
     'posts_per_page' => '8', 
    ); 

    $loop = new WP_Query($work); 

     while ($loop->have_posts()) : $loop->the_post(); 

      if (get_post_type() == 'portfolio') { 
       // My portfolio code will go here 
      } 

      else if (get_post_type() == 'post') { 
       // My post code will go here 
      } 

     endwhile; 

?> 

這似乎工作正常,但我想要做的是限制每個類型顯示的帖子數量。我已經設置它,以便它總共限制8個,但是我想進一步擴展並將每個類型限制爲4(總體上4 + 4 = 8)。

回答

0

嘿,我不能想到一個簡單的解決方案,但你有一些可能性來實現這一點。

  1. 查詢所有帖子,並提出反(糟糕的表現,如果你有非常多的帖子)

    $work = array(
        'post_type' => array('portfolio','post'), 
        'posts_per_page' => -1, 
    ); 
    
    $count_portfolio = 0; 
    $count_post = 0; 
    
    $loop = new WP_Query($work); 
    
        while ($loop->have_posts()) : $loop->the_post(); 
    
         if (get_post_type() == 'portfolio' && $count_portfolio < 4) { 
          $count_portfolio++; 
    
         } 
    
         else if (get_post_type() == 'post' && $count_post < 4) { 
          $count_post++; 
         } 
    
         if($count_portfolio >=3 && $count_post >=3) { 
          break; 
         } 
    
    
        endwhile; 
    
  2. 讓兩個不同的查詢 - 一個在過去的四個組合和一個過去4個帖子

// pseudo code 
$allposts = array_merge($query1->posts, $query2->posts); 

usort($allposts,'orderbydate_custom_function'); 

foreach($allposts as $post) { 
    // do output 
} 
  1. 使用$ wpdb進行自定義調用以準確查詢您想要的內容
+0

感謝您的回覆。我不喜歡計算帖子的想法,因爲這會對錶現產生重大影響。我可能會創建2個獨立的函數並分別運行它們。 – zvalliji

+0

如果績效很重要,您可能最好使用選項2)或3)。但是1)是最快實施的。 – Blackbam

+0

謝謝你,我已經將你的評論標記爲正確。 – zvalliji

相關問題