从2个不同的WP安装获取最新帖子

时间:2017-12-03 作者:Brian Brown PhD

我有三个WordPress安装(不能使用多站点;不能使用RSS/Atom提要),我正在尝试在主站点主页上显示两个子站点中每一个子站点最近10篇文章的日期排序列表。网站的组织方式如下:
https://www.example.com
https://www.example.com/editorials
https://www.example.com/news

这是WordPress的三个独立安装,但是共享同一个数据库(当然,使用不同的db前缀)。

我尝试创建一个调用wp load的循环。php函数,但我似乎无法重置它;相反,第二次迭代只是重新显示第一个循环中的帖子(在本例中,来自./editorials/wp load.php)。

我曾尝试将所有帖子放置在单独的数组中,以便以后按日期进行组合和排序,即$content1和$content2,但由于我无法从第二个实例中获取帖子,所以我还没有做到这一点。

下面是代码:
https://pastebin.com/9REj1RhV<提前谢谢-布莱恩

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

我会使用REST API从每次安装中获取最新的10篇帖子,然后将这两个数组组合起来,按日期排序,然后只使用最新的10条结果。

$editorials = wp_remote_get( \'https://www.example.com/editorials/wp-json/wp/v2/posts/\' );
$news       = wp_remote_get( \'https://www.example.com/news/wp-json/wp/v2/posts/\' );

$editorials = json_decode( $editorials[ \'body\' ] );
$news       = json_decode( $news[ \'body\' ] );

$all = array_merge( $editorials, $news );
//* The spaceship operator requires PHP > 7.0
usort( $all, function( $a, $b ) { return $a->date <=> $b->date; } );
$all = array_slice( $all, 0, 10 );

//* Do something useful with the combined array of posts

结束