我是新来的WordPress
。我需要显示每个父类别的第一个/最后一个帖子。这可能在任何子类别中。
我需要简单的代码来获得它。
谢谢。
<?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>';
}
?>
我设法使用自定义查询来做到这一点,这是我执行的查询:
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。
希望这可以帮助某人,干杯!