从多个类别中排序和显示标题

时间:2014-04-19 06:38:21

标签: wordpress

我在我的页面模板中使用此功能来显示类别编号为8,17,23,423的最近20篇帖子标题

<div id="horizontalTab">
   <ul class="resp-tabs-list">
     <li>Football</li>
     <li>Ice Hockey</li>
     <li>Basketball</li>
     <li>Tennis</li>
    </ul>
    <div class="resp-tabs-container">
      <?php 
      foreach (get_categories(array('include'=>'8, 17, 23, 423', 'orderby' => 'count', 'order' => DESC)) as $category) {
      $catid = $category->cat_ID;
      $args = array( 'category' =>$catid, 'numberposts' => 20 );
      $myposts = get_posts($args); ?>
      <div>
       <?php foreach($myposts as $post) { ?>
       <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><br/>
       <?php } ?>
     </div>
     <?php } ?>
   </div>
</div>

但是这段代码增加了10多个数据库查询。如何优化此查询。 另一个问题。如何按以下顺序更改排序类别:23,17,8,423。

See in action

1 个答案:

答案 0 :(得分:0)

为什么在已经知道类别时使用get_categories。 您所要做的就是在数组中存储类别ID并运行循环

$cat_array=array(23,17,8,423);
foreach ($cat_array as $catid)
{
$args = array( 'category' =>$catid, 'numberposts' => 20 );
$myposts = get_posts($args); 

  <div>
   <?php foreach($myposts as $post) { ?>
   <a href="<?php $post->guid; ?>"><?php $post->post_title; ?></a><br/>
   <?php } ?>
 </div>
<?php } ?>