檢查WordPress插件在多站點(diǎn)網(wǎng)絡(luò)中的激活狀態(tài)指南

當(dāng)我們談?wù)撛赪ordPress多站點(diǎn)網(wǎng)絡(luò)上安裝的插件時(shí),有些插件可以被激活以供整個(gè)網(wǎng)絡(luò)使用,而有些則只能在特定的單個(gè)站點(diǎn)上激活。

圖片[1]-檢查WordPress插件在多站點(diǎn)網(wǎng)絡(luò)中的激活狀態(tài)指南-光子波動(dòng)網(wǎng) | 專(zhuān)業(yè)WordPress修復(fù)服務(wù),全球范圍,快速響應(yīng)

網(wǎng)絡(luò)激活的插件:

圖片[2]-檢查WordPress插件在多站點(diǎn)網(wǎng)絡(luò)中的激活狀態(tài)指南-光子波動(dòng)網(wǎng) | 專(zhuān)業(yè)WordPress修復(fù)服務(wù),全球范圍,快速響應(yīng)

針對(duì)特定站點(diǎn)激活的相同插件:

圖片[3]-檢查WordPress插件在多站點(diǎn)網(wǎng)絡(luò)中的激活狀態(tài)指南-光子波動(dòng)網(wǎng) | 專(zhuān)業(yè)WordPress修復(fù)服務(wù),全球范圍,快速響應(yīng)

理解它的工作原理應(yīng)該不太困難,但當(dāng)我們嘗試在代碼中檢查一個(gè)插件是否被激活為整個(gè)網(wǎng)絡(luò)還是只對(duì)特定站點(diǎn)時(shí),可能會(huì)遇到問(wèn)題。

有很多不同的方法可以實(shí)現(xiàn)這一點(diǎn),每種方法都有其獨(dú)特之處。

is_plugin_active_for_network() 

如果一個(gè)插件是為整個(gè)網(wǎng)絡(luò)激活的,那么這個(gè)函數(shù)就會(huì)返回真(true)。所以比如說(shuō),如果我們?cè)谡军c(diǎn)1上使用這個(gè)函數(shù),而我們的插件只在站點(diǎn)1上激活,并沒(méi)有被設(shè)置為網(wǎng)絡(luò)范圍內(nèi)激活,那么這個(gè)函數(shù)會(huì)返回假(false)。

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

is_plugin_active() 

這個(gè)函數(shù)很實(shí)用,因?yàn)樗瓿蓛身?xiàng)工作:

  1. 它會(huì)檢查插件是否僅在你當(dāng)前使用的網(wǎng)站上被激活。
  2. 它還會(huì)檢查插件是否被設(shè)置為在整個(gè)網(wǎng)絡(luò)上激活。

如果這兩個(gè)條件中的至少一個(gè)成立,就會(huì)返回真(true)。

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

放心,這個(gè)功能在非多站點(diǎn)網(wǎng)絡(luò)的環(huán)境下也是安全的。

檢查插件是否僅在特定站點(diǎn)上處于激活狀態(tài) 

因?yàn)閃ordPress核心里沒(méi)有這項(xiàng)功能,所以我為你準(zhǔn)備了以下自定義代碼:

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

你可以檢查多站點(diǎn)網(wǎng)絡(luò)的特定網(wǎng)站,但是不要忘記提供 $blog_id 和 $plugin 變量。

switch_to_blog( $blog_id );
if( in_array( $plugin, (array) get_option( 'active_plugins', array() ) ) ) {
}
	
restore_current_blog();

檢查特定插件(在我們的例子中是 WooCommerce)在哪些網(wǎng)站上處于激活狀態(tài):

$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();

總結(jié)

簡(jiǎn)而言之,無(wú)論你使用is_plugin_active()還是is_plugin_active_for_network(),WordPress都會(huì)在這兩種情況下檢查在站點(diǎn)選項(xiàng)中被激活的插件:

圖片[4]-檢查WordPress插件在多站點(diǎn)網(wǎng)絡(luò)中的激活狀態(tài)指南-光子波動(dòng)網(wǎng) | 專(zhuān)業(yè)WordPress修復(fù)服務(wù),全球范圍,快速響應(yīng)

不用擔(dān)心會(huì)過(guò)度使用數(shù)據(jù)庫(kù),因?yàn)檫@些選項(xiàng)會(huì)自動(dòng)加載,并且如果你多次使用is_plugin_active(),它只會(huì)從一個(gè)全局變量進(jìn)行檢查。

數(shù)據(jù)庫(kù)中的選項(xiàng)值實(shí)際上是一個(gè)序列化的數(shù)組,就像下面這樣:

圖片[5]-檢查WordPress插件在多站點(diǎn)網(wǎng)絡(luò)中的激活狀態(tài)指南-光子波動(dòng)網(wǎng) | 專(zhuān)業(yè)WordPress修復(fù)服務(wù),全球范圍,快速響應(yīng)

聯(lián)系我們
教程看不懂?聯(lián)系我們?yōu)槟赓M(fèi)解答!免費(fèi)助力個(gè)人,小企站點(diǎn)!
客服微信
客服微信
電話:020-2206-9892
QQ咨詢(xún):1025174874
郵件:info@361sale.com
工作時(shí)間:周一至周五,9:30-18:30,節(jié)假日休息
? 轉(zhuǎn)載聲明
本文作者:Harry
THE END
喜歡就支持一下吧
點(diǎn)贊0 分享
評(píng)論 搶沙發(fā)

請(qǐng)登錄后發(fā)表評(píng)論

    暫無(wú)評(píng)論內(nèi)容