我是一个新手,需要根据用户在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查询的输出发送到一个数组,对数组进行排序,然后将其打印到页面上,但由于我对所有这些都非常陌生,因此我现在确实需要一些指导。谢谢
最合适的回答,由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>\';
}
}