从网络中的多个站点查询帖子?

时间:2010-10-04 作者:NetConstructor.com

我意识到有一些问题围绕着我想要的解决方案起舞,但我相信我正在寻找一些具体的问题。

这实际上是一个由两部分组成的问题:

1) 我的目标是让wordpress在网络(多站点)模式下运行,我正试图找出一种基本上将特定站点“分组”在一起的方法。我知道“多网络”插件,但我怀疑这是否是最好的方法?这里的关键是允许特定用户在自己的子网中添加/编辑站点。

2) 这是这篇文章的关键问题。。。我想知道最好的方法,这将允许我基本上从这个“子网络”的网站查询帖子。因此,例如,如果这个子网络中有10个站点,并且每个站点都在一个称为“新闻”的自定义帖子类型中创建了帖子,那么我希望能够显示这10个站点集合中最近发布的10篇帖子。

注意:我需要能够创建多个子网络,这反过来意味着查询最新发布的“新闻”只能显示来自正确组的帖子。

最后,我确实意识到这样做的解决方案是存在的,但我正在寻找两种情况下的最佳方法,这两种情况都需要最少的数据库负载/查询。我也非常希望通过函数中的代码来实现这一点。php文件,而不是安装会产生额外膨胀的插件。

我非常愿意接受任何建议,并感谢任何回应。

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

我知道您说过不想安装插件,但这正是您在这种情况下想要做的。将代码放置在主题的functions.php 文件要求您在子网络中的所有站点上使用相同的主题,或者维护同一文件的多个副本。另一方面,您可以为网络创建一个简单的插件来封装功能,然后activate it on the network, 并立即拥有只需维护一个文件即可使用的功能。这实际上会比根据您的functions.php 文件。

这里要记住的是,你要么需要在网络上的每个站点上循环查找你的帖子,要么执行自定义查询。我会选择第二个例程,因为尽管它有点复杂,但它是一个单一的查询,而不是每个博客的不同查询。

大体上您需要执行以下操作:

获取网络/子网络中所有博客ID的列表。如果使用普通安装,可以在wp_blogs 桌子做一个简单的SELECT query加载一个数组,然后可以循环将每个博客添加到主查询中JOIN将表放在一起并基于blog_id (来自wp_blogs), post_id (来自wp_BLOG_posts), 以及自定义分类法very 很复杂,我现在没有时间来破解),但这将是一个完成所有工作的单一语句。

或者。。。

获取博客ID列表并将其存储在数组中使用另一种方法,您必须为网络中的每个博客运行单独的查询。如果你的网络是10-20个站点,这不是什么大问题。如果您的网络是200-500个站点,则可能会出现一些性能问题。

此外,如果可能的话,您应该缓存查询的结果。如果它是在多个页面加载上运行的(例如,对于在网络上共享的边栏小部件),那么您只希望在有新数据要获取时运行查询。否则,请提供缓存的结果,这样就不会降低网络速度。

SO网友:andrea_r

你肯定需要一个多站点网络插件。目前有三种选择:两种付费,一种免费。

从那里,您可以使用类似sitewide标记插件的东西将帖子拉到每个网络中的主博客。

这些都不能(或应该)从主题的函数文件中完成。

SO网友:mireille raad

建立一个自定义的谷歌搜索引擎谷歌。com/cs指定要搜索的所有网站

将其嵌入您的网站

结束

相关推荐

导入到WordPress MultiSite时禁用HTML过滤

我正在迁移到WordPress多站点实例的许多站点都在帖子中嵌入了视频和iFrame。我宁愿禁用WordPress功能,在导入时去掉嵌入的内容,而不是将每篇文章转换为犹太教式的视频嵌入方式。编辑帖子时禁用剥离是as simple as disabling the kses filter. 不幸的是,我不知道导入帖子需要禁用什么。目前我怀疑wp\\u insert\\u post()方法,但没有缩小过滤器的范围。有什么想法吗?Update: 这是特定于WordPress Multisite的。导入到单个Wo