2013-03-25 2 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.0042seg.

Надеюсь, это может помочь кому-то, ура!

Смежные вопросы