按日期对帖子进行排序-get_blog_of_user_id()

时间:2014-03-17 作者:mike31

我是一个新手,需要根据用户在WordPress多站点网络上订阅的所有站点的最新帖子按时间顺序列出。

使用下面的代码,我可以生成一个列表,其中帖子按时间顺序排列(DESC),但按站点分组:

站点A星期三站点A星期二站点A星期一站点B星期三站点B星期二站点B星期二站点B星期一站点B星期一站点B星期一我需要生成一个列表,其中所有帖子按时间顺序排列:

站点A星期三站点B星期三站点A星期二站点B星期二站点B星期二站点A星期一站点B星期一站点B星期一

        $user = get_current_user_id();
        $blogs = get_blogs_of_user( $user );
             if( $blogs ) {
             foreach( $blogs as $blog ) {
                switch_to_blog( $blog->userblog_id );
                        $query = new WP_Query (\'posts_per_page=2\');
                                if ($query->have_posts()) :
                                        while ($query->have_posts()) : $query->the_post();

                                        <li>
                                        <a href="<?php echo $string; ?>$
                                        </li>

                                         <?php
                                        endwhile;                      $
                restore_current_blog();

                        }
     }
?>
?>

当我尝试使用(新的WP\\U查询(“order by”=>“date”)将“order by”应用于WP\\U查询时,我正在生成上面的第一个列表(按时间顺序排列的列表,按站点分组)。我觉得我应该将WP\\u查询的输出发送到一个数组,对数组进行排序,然后将其打印到页面上,但由于我对所有这些都非常陌生,因此我现在确实需要一些指导。谢谢

1 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

您可以构建所有post项目的数组,然后在查询结束时按日期对其进行排序:

$blogs = get_blogs_of_user( get_current_user_id() );

if ( $blogs ) {
    $items = array();

    foreach ( $blogs as $blog ) {
        switch_to_blog( $blog->userblog_id );
        $posts = get_posts( \'posts_per_page=2\' );
        foreach ( $posts as $post ) {
            // Use the timestamp to sort all posts by later.
            $timestamp = strtotime( $post->post_date_gmt );

            // Just in case another published at *exactly* same time.
            while ( isset( $items[ $timestamp ] ) )
                $timestamp++;

            // Add our HTML for this post to the stack.
            // You can\'t store the post object and work on it later as we\'ll be outside the scope of this particular blog.
            $items[ $timestamp ] = sprintf( \'<li><a href="%s">%s</a></li>\', get_permalink( $post->ID ), get_the_title( $post->ID  ) );
        }
    }

    restore_current_blog();

    if ( $items ) {
        // Sort by latest to oldest.
        krsort( $items );

        // Display!
        echo \'<ul>\';
            echo implode( "\\n", $items );
        echo \'</ul>\';       
    }
}

结束