将元数据API用于网络选项
访问网络选项的方式在 WordPress 6.1 中发生了变化。网络选项一直存储在一个meta
名为sitemeta
. 这个名字很容易混淆,因为“站点”在这个上下文中的意思是“网络”,不要与博客 meta
混淆,用于存储站点元数据。在 WordPress 6.1 之前,函数get_network_option
、add_network_option
、update_network_options
和delete_network_option
使用自定义数据库查询和缓存。这导致了一些性能问题和大量需要维护的代码。
在 WordPress 6.1 中,网络选项功能已更新为使用更成熟的元数据 API,该 API 已用于其他对象类型的元数据,如帖子、术语和用户。这有效地使函数get_network_option
类似于get_metadata
. 这有许多优点,包括:
- 与其他元数据类型的一致性
- 支持
register_meta
功能,例如默认值 - 改进的缓存启动
- 更少的数据库查询,因为所有网络选项都在一个请求中启动
除了这些改进之外,WP_Network_Query
还有一个名为的新参数update_network_meta_cache
允许查询中的所有网络在单个查询中启动网络选项。
此更改的一个副作用是使用整数值的新更新的网络选项可能会导致返回字符串。将此类值与整数比较一起使用时,允许强制转换为 int 很重要。在旧的实现中,选项的第二个页面加载会导致返回一个字符串。此更改可以被视为修复,但它与当前行为不同。
此更改使缓存组site-options
不再使用,并且在将来的版本中将被删除。
如需更多信息,请访问Trac 票证 #37181。
在网络选项中存储网络的主站点 ID
在WordPress 6.1 中创建多站点时,网络上的主站点 ID 存储在网络选项中。由于网络上的主要站点在大多数情况下都不会改变,因此这是一个可以存储以供将来参考的值。这节省了WP_Site_Query
在引导过程中按域和路径查找主站点的调用,这使得此查找浪费且不需要。如上所述,此更改还有助于设置多个网络,因为网络选项是在单个请求中启动的。这意味着在查找多个网络时,主站点 ID 现在与其他网络选项一起启动,从而减少了数据库查询/缓存查找。