显示wordpress中每个类别的第一个/最后一个帖子

时间:2013-03-25 04:49:21

标签: wordpress

我是WordPress的新手。我需要显示每个父类别的第一个/最后一个帖子。这可能属于任何子类别。

我需要简单的代码来实现它。

感谢。

2 个答案:

答案 0 :(得分: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>';
}
?>

答案 1 :(得分: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。

希望这可以帮助别人,欢呼!