使用多站点时,有两组常用的函数用于提取/更新选项。
现在如何构造选项并将其保存到数据库取决于您。这取决于插件添加的功能,以及存储/拉取选项的位置。
Single Site Configuration
get_option()
和
update_option()
用于与
wp_options
桌子此表特定于每个博客id。您可能有
wp_options_2
和a
wp_options_3
桌子哪里
2
和
3
对应于该博客id。
如果您使用get_option()
在代码中。。。它将在相应的blog id中查找该选项wp_options
桌子这意味着每个子站点在这里可能有不同的值。
Multi Site Configuration
另一组功能是
get_site_option()
和
update_site_option()
. 这两个函数用于与
site_meta
桌子这个
site_meta
表只存在一次。。并用于所有子网站的全局选项。
如果您使用get_site_option()
在代码中。。。它将从site_meta
桌子换句话说,每个子网站将使用来自site_meta
桌子
Custom Code to Check if Multisite is Active
当我编写一个需要与多站点兼容的插件时,我会做什么。。正在添加一个自定义功能,以检查站点是否为网络安装。如果是。。。我从网站元拉。。。如果不是,我会从站点选项中选择。
// First, I define a constant to see if site is network activated
if ( ! function_exists( \'is_plugin_active_for_network\' ) ) {
// Makes sure the plugin is defined before trying to use it
require_once( ABSPATH . \'/wp-admin/includes/plugin.php\' );
}
if (is_plugin_active_for_network(\'my_plugin_folder/main.php\')) { // path to plugin folder and main file
define("THIS_PLUGIN_NETWORK_ACTIVATED", true);
}
else {
define("THIS_PLUGIN_NETWORK_ACTIVATED", false);
}
// Wordpress function \'get_site_option\' and \'get_option\'
function get_this_plugin_option($option_name) {
if(THIS_PLUGIN_NETWORK_ACTIVATED== true) {
// Get network site option
return get_site_option($option_name);
}
else {
// Get blog option
return get_option($option_name);
}
}
// Wordpress function \'update_site_option\' and \'update_option\'
function update_this_plugin_option($option_name, $option_value) {
if(THIS_PLUGIN_NETWORK_ACTIVATED== true) {
// Update network site option
return update_site_option($option_name, $option_value);
}
else {
// Update blog option
return update_option($option_name, $option_value);
}
}
现在,我们可以简单地使用
get_this_plugin_option()
或
update_this_plugin_option()
; 我们的代码将确定该站点是否处于网络激活状态。。并从相应的选项表中更新或获取选项。
这样可以避免编写两次代码。。或者在为网络激活编码时使用两个单独的挂钩。