在一个站点上显示来自网络上其他站点的所有帖子

时间:2020-10-20 作者:MxLDevs

我有一个多站点设置,如下所示

Main Site has no posts
Site A has 1 post A
Site B has 1 post B
Site C has 1 post C
我感兴趣的是能够将主站点视为每个子网站的聚合,这样当用户访问主站点时,他们就会看到

Post A
Post B
Post C
在Posts仪表板中,我也会看到这三个帖子。

我想到的第一个解决方案是,通过挂接添加帖子、编辑帖子等,将每个站点的帖子复制到主站点。这样,当某些内容发生更改时,它也会更改主站点上的帖子。但这似乎是多余的。

当我查看数据库时,我可以看到每个站点实际上只是以一个数字作为前缀。从这里我想我可以

通过查询blogs 表给定每个前缀,从相应的表中查询所有帖子,并对所有结果进行并集,因此基本上,当您从站点请求帖子列表时,它不会提取自己的帖子,而是从数据库中的其他表中提取帖子。

然而,我一直在浏览代码,但我无法弄清楚查询实际在哪里执行,以及随后是否有任何挂钩可以用来更改结果。

任何方向都很好。

1 个回复
SO网友:Rick Hellewell

有多种方法可以循环访问多站点中的所有站点,然后执行;WP回路;在每个子站点上。它可能会变得有点复杂,但它是可以做到的。

我对此做了一些研究,发现了一些可以做到这一点的代码片段,但没有完整的解决方案。所以我写了自己的插件(名为;Multisite Post Reader"E;,可以在存储库中找到)来完成这项工作。它有很多选项来过滤显示的内容。

虽然这里不推荐使用插件,但它可能满足您的需要。至少,您可以挖掘代码并根据自己的需要进行修改。(这里的代码有点长。)尽管您从存储库中获得“版本警告”,但它确实适用于当前的WP版本。

我为跨多个站点的图像编写了一个类似的。我一直在努力将这两个插件组合成一个插件,但这在我的工作列表中是一个低优先级的插件。

相关推荐

尽管有可用帖子,GET_NEXT_POSTS_LINK()仍不返回任何结果

我正在基于Genesis框架开发一个自定义主题。我想在单篇文章视图中的任何文章下方显示“上一篇文章|下一篇文章”导航。但是,get\\u next\\u posts\\u link()和get\\u previous\\u posts\\u link()都不会返回任何值。我能看到的所有输出是|当然,也有相邻的柱子可用。我的代码如下所示仅有一个的php<?php function myslug_render_post_navigation(){ echo ge