我知道您说过不想安装插件,但这正是您在这种情况下想要做的。将代码放置在主题的functions.php
文件要求您在子网络中的所有站点上使用相同的主题,或者维护同一文件的多个副本。另一方面,您可以为网络创建一个简单的插件来封装功能,然后activate it on the network, 并立即拥有只需维护一个文件即可使用的功能。这实际上会比根据您的functions.php
文件。
这里要记住的是,你要么需要在网络上的每个站点上循环查找你的帖子,要么执行自定义查询。我会选择第二个例程,因为尽管它有点复杂,但它是一个单一的查询,而不是每个博客的不同查询。
大体上您需要执行以下操作:
获取网络/子网络中所有博客ID的列表。如果使用普通安装,可以在wp_blogs
桌子做一个简单的SELECT
query加载一个数组,然后可以循环将每个博客添加到主查询中创建一个循环,将每个博客添加到一个大型查询中。你需要JOIN
将表放在一起并基于blog_id
(来自wp_blogs
), post_id
(来自wp_BLOG_posts
), 以及自定义分类法就像我说的,这不是一个简单的解决方案(SQL语句将是very 很复杂,我现在没有时间来破解),但这将是一个完成所有工作的单一语句。
或者。。。
获取博客ID列表并将其存储在数组中遍历数组,查询网络中的每个博客,并将匹配项(带有特定分类术语的帖子)附加到单独的数组中使用另一种方法,您必须为网络中的每个博客运行单独的查询。如果你的网络是10-20个站点,这不是什么大问题。如果您的网络是200-500个站点,则可能会出现一些性能问题。
此外,如果可能的话,您应该缓存查询的结果。如果它是在多个页面加载上运行的(例如,对于在网络上共享的边栏小部件),那么您只希望在有新数据要获取时运行查询。否则,请提供缓存的结果,这样就不会降低网络速度。