星辰解忧工作室网盘合集          阿里云服务器特惠          星辰工具箱合集          腾讯云服务器特惠          游戏加速器礼包合集
         雨云服务器 宝塔面板优惠 送你10850元礼包 子比主题优惠 文字广告位10/月
华为云优惠 文字广告位10/月 腾讯云服务器特惠 文字广告位10/月 文字广告位10/月
文字广告位10/月 文字广告位10/月 文字广告位10/月 文字广告位10/月 文字广告位10/月
文字广告位10/月 文字广告位10/月 文字广告位10/月 文字广告位10/月 文字广告位10/月

温馨提示:请在上面搜索| 查找更多免费资源,如需广告位请联系站长QQ 3649844032

如何检查 WordPress 插件在多站点网络中是否处于激活状态

WordPress 主题 CoreNext

文本是《WordPress 多站点(共10篇)》专题的第 10 篇。阅读本文前,建议先阅读前面的文章:

当谈到安装在 WordPress 多站点网络上的插件时,其中一些插件可以为整个网络或仅为网络的特定站点激活。

网络激活插件:

WordPress 多站点网络中的网络激活插件
当您“网络激活”插件时,它将自动为您网络中的每个站点激活。是的,这听起来很明显,但以防万一。

相同的插件是针对特定站点激活的:

WordPress 多站点中特定于站点的插件激活

理解它是如何工作的应该不是问题,当我们尝试检查插件是否在代码中是网络或特定于站点激活时,可能会出现问题。

有多种方法可以做到这一点,并且每种方法都有很大不同。

is_plugin_active_for_network() 

如果插件已通过网络激活,则此函数将返回true。因此,例如,如果我们尝试在站点 1 上使用此函数,并且我们的插件在站点 1 上激活,但未在网络范围内激活,则该函数将返回 false

if( is_plugin_active_for_network( 'woocommerce/woocommerce.php' ) ) {
	// WooCommerce is network-activated
} else {
	// WooCommerce isn't network-activated	
}

就是如此简单。

is_plugin_active() 

这个函数非常有趣,因为它做了两件事:

  1. 它检查插件是否在您正在使用的网站上本地激活。
  2. 它检查插件是否是网络激活的。

如果 至少一个条件 为 true

if( is_plugin_active( 'woocommerce/woocommerce.php' ) ) {
	// WooCommerce is either activated on this specific site or network-activated
}

不用担心,此功能在多站点网络之外也可以安全使用。

检查插件是否仅在特定站点上处于激活状态 

WordPress核心中没有这样的功能,所以下面是我为您定制的代码:

if( in_array( $plugin, (array) get_option( 'active_plugins', array() ) ) ) {

}

您还可以检查多站点网络的特定网站,只是不要忘记提供 $blog_id 和 $plugin 变量。

switch_to_blog( $blog_id );

if( in_array( $plugin, (array) get_option( 'active_plugins', array() ) ) ) {

}
	
restore_current_blog();

检查特定插件(在我们的例子中是 WooCommerce)在哪些网站上处于激活状态:

$sites = get_sites();
foreach( $sites as $site ) {
	switch_to_blog( $site->blog_id );
	
	if( in_array( 'woocommerce/woocommerce.php', (array) get_option( 'active_plugins', array() ) ) ) {
		echo "WooCommerce is active on {$site->blogname}";
	}
	
	restore_current_blog();
}

总结 

长话短说,无论您使用 is_plugin_active() 还是 is_plugin_active_for_network() – 在这两种情况下,WordPress 都会检查站点选项中激活的插件:

函数名称 它到底做什么
is_plugin_active_for_network() get_site_option( active_sitewide_plugins' )
is_plugin_active() get_option( 'active_plugins' )get_site_option( 'active_sitewide_plugins' )

不必担心过多的数据库使用,因为这些选项无论如何都会自动加载,并且如果您要多次运行 is_plugin_active() – 它只会检查来自全局变量。

数据库选项值本身是一个序列化数组,如下所示:

WordPress 数据库中的活动插件
从此屏幕截图中,您可以看到网站上激活了几个插件 – WooCommerce、Advanced Cron Manager 和Simple WP Crossposting及其附加组件。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

温馨提示: 本文最后更新于2024-08-09 18:51:40,某些文章具有时效性,若有错误或已失效,请在下方 留言或联系 星辰源码网
© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容