繁体   English   中英

WordPress订单get_categories()列出类别为最新的帖子

[英]Wordpress order get_categories() list with category that has had the latest post on top

我想知道是否有人会帮助我。

我需要能够显示子类别,然后显示该子类别中的帖子。 我受到限制,因此只能显示2个子类别,每个显示仅2个帖子。

  • 子类别A
    • 发布
    • 发布
  • 子类别B
    • 发布
    • 发布

我需要做的是对类别进行排序,以使添加了最新帖子的类别位于顶部。 ee,如果将其他帖子添加到子类别B,则该列表将显示在子类别A上方。

这是我目前的代码

$catid = 2;
$subcats = get_categories('child_of=' . $catid.'&number=2');
    foreach($subcats as $subcat) {
    echo '<li>' . $subcat->cat_name . '</li>';
    echo '<ul>';
   $subcat_posts = get_posts('cat=' . $subcat->cat_ID.'&posts_per_page=2');
foreach($subcat_posts as $subcat_post) {
        $postID = $subcat_post->ID;
    echo '<li>';
    echo '<a href="' . get_permalink($postID) . '">';
    echo get_the_title($postID);
    echo '</a></li>';
    }
    echo '</ul>';
    }?>

任何想法将不胜感激。

中号

将以下排序功能添加到您的functions.php中:

function sort_categories_by_post_date($a, $b) {
    $a_posts = get_posts('cat=' . $a->term_id);
    $b_posts = get_posts('cat=' . $b->term_id);

    if (!$a_posts) {
        $a_cmp = 0;
    } else {
        $a_cmp = strtotime($a_posts[0]->post_date);
    }

    if(!$b_posts) {
        $b_cmp = 0;
    } else {
        $b_cmp = strtotime($b_posts[0]->post_date);
    }

    return strcmp($b_cmp, $a_cmp); 
}

为了使用该功能,请在以下行旁边:

$subcats = get_categories('child_of=' . $catid.'&number=2');

添加以下行:

usort($subcats, 'sort_categories_by_post_date');

请注意,这只会对2个拉动类别进行排序。 因此,您可能希望提取所有帖子类别(这意味着删除&number=2 ),对它们进行排序,然后使用以下代码获取其中的前两个:

$subcats = array_slice($subcats, 0, 2);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM