2013-03-25 35 views

回答

0
<?php 
$category = get_categories(); 
foreach ($category as $cat) 
{ 
    query_posts(array ('cat' => $cat->cat_ID, 'posts_per_page' => 5)); 
    echo '<div class="post">'; 
    echo '<h2>'.$cat->cat_name.'</h2>'; 
    echo '<ul>'; 
    while (have_posts()) 
    { 
     the_post(); 
     echo '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>'; 
    } 
    echo '</ul>'; 
    $category_id = get_cat_ID($cat->cat_name); 
    $category_link = get_category_link($category_id); 
    echo '<div class="paging">'; 
    echo '<a href="'.$category_link.'" title="'.$cat->cat_name.'">More Post from '.$cat->cat_name.'</a>'; 
    echo '</div>'; 
    echo '</div>'; 
} 
?> 
+0

第一篇文章呢? – KarSho

+0

'posts_per_page'=> 5表示顯示前5個最新帖子 – Devan

0

我成功地做到這一點使用這裏的自定義查詢我執行查詢:

SELECT * FROM (
    SELECT a.*, d.name as category FROM wp_posts AS a 
    INNER JOIN wp_term_relationships AS b ON b.object_id = a.ID 
    INNER JOIN wp_term_taxonomy AS c ON b.term_taxonomy_id = c.term_taxonomy_id AND c.parent = 0 
    INNER JOIN wp_terms AS d ON d.term_id = c.term_id AND c.taxonomy = 'category' 
    ORDER BY a.post_date DESC 
) as f 
GROUP BY f.category 
ORDER BY f.post_date DESC; 

這樣做是什麼讓帖子的完整數據集所涉及的類別分類,然後將整理它降序模式,所以它會有最新的帖子,然後按類別分組,然後再次排序。如果你想得到最古老的只是將DESC更改爲ASC。

我在數據庫中使用這個腳本將有127,000個帖子,即使我的服務器非常強大執行此查詢需要0.0042秒。

希望這可能有助於某人,歡呼!

相關問題