當前位置:首頁>WordPress建站>WordPress開發(fā)>根據另一個插件的激活狀態(tài)停用 WordPress 插件

根據另一個插件的激活狀態(tài)停用 WordPress 插件

在進行WordPress插件開發(fā)時,尤其是附加組件或高級插件,您必須處理一些用例。例如,一個這樣的用例是,在激活高級插件時,您必須停用免費增值插件。或者,如果您的插件依賴于其他插件,您可以在激活插件之前檢查這些插件是否處于活動狀態(tài)。自定義條件邏輯可以添加到您的插件中,在激活和停用掛鉤上。

檢查依賴插件是否處于活動狀態(tài)

假設您的插件的激活取決于另一個插件。然后,在激活插件之前,您需要檢查其他插件是否處于活動狀態(tài)。必須使用WordPress 提供的 register_activation_hook?添加此用于激活插件的條件邏輯。

register_activation_hook(__FILE__, 'mypluginname_activation_logic');

其中 ‘mypluginname_activation_logic’ 應該寫在你的主插件文件中。在此功能中,您必須檢查相關插件是否處于活動狀態(tài)。

function mypluginname_activation_logic() {
    //如果依賴插件未激活,禁用本插件
    if (!is_plugin_active('abc/abc.php') )
    {
        deactivate_plugins(plugin_basename(__FILE__));
    }
}

WordPress 為您提供了一個函數is_plugin_active來檢查插件是否處于活動狀態(tài)。這個函數基本上返回一個真或假的結果。但這里的缺點是您必須知道確切的插件文件夾名稱和文件名。

更優(yōu)選的選項是使用class_existsfunction_exists函數檢查插件創(chuàng)建的類或函數是否存在。例如,WooCommerce 插件創(chuàng)建了類“WooCommerce”。要檢查 WooCommerce 插件是否處于活動狀態(tài),您可以使用:

if (class_exists('Woocommerce')) {
    // your code here
}

但很明顯,這里的缺點是,如果在插件更新期間類或函數名稱發(fā)生變化,則此檢查將不起作用。

從您的插件停用另一個插件

要停用另一個插件,您可以使用 WordPress 提供的功能:deactivate_plugins 函數。必須在適當的鉤子上調用deactivate 函數,這取決于插件應該何時被停用。例如,要停用插件ABC,當插件XYZ被激活時,我們必須鉤入插件XYZ激活函數,并停用ABC。

register_activation_hook(__FILE__, 'XYZ_activation');
function XYZ_activation() {
    deactivate_plugins('ABC/ABC.php');
}

要停用的插件的路徑必須在deactivate_plugins函數中指定。

如果依賴插件被停用,則停用您的插件

在基本插件上構建自定義附加組件或擴展時會出現這樣的用例。在這種情況下,您可能希望在停用基本插件時停用您的附加組件。為此,您必須掛鉤到deactivated_plugin操作,并檢查停用的插件是否是基礎插件。

function detect_plugin_deactivation( $plugin, $network_activation ) {
    if ($plugin=="abc/abc.php")
    {
        deactivate_plugins(plugin_basename(__FILE__));
    }
}
add_action( 'deactivated_plugin', 'detect_plugin_deactivation', 10, 2 );

上面指定的所有用例主要是為了停用插件。這樣做的原因是,最好不要代表用戶激活插件。可能有一些必須使用的插件您希望自動激活,可以創(chuàng)建此類插件并將其放置在 must use 目錄中。有關更多信息,您可以參考《什么是 WordPress 必要插件 mu-plugins,如何使用?

聲明:本站所有文章,如無特殊說明或標注,均為本站原創(chuàng)發(fā)布。任何個人或組織,在未征得本站同意時,禁止復制、盜用、采集、發(fā)布本站內容到任何網站、書籍等各類媒體平臺。如若本站內容侵犯了原著者的合法權益,可聯(lián)系我們進行處理。

給TA打賞
共{{data.count}}人
人已打賞
歡迎關注WordPress大學公眾號 WPDAXUE
WordPress開發(fā)WordPress資訊

WordPress 5.8+ 引入了主題的編輯器控制文件 theme.json

2021-6-28 9:36:47

WordPress開發(fā)

使用 theme.json 配置WordPress主題設計

2021-8-6 9:28:56

0 條回復 A文章作者 M管理員
    暫無討論,說說你的看法吧
?
個人中心
購物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索

韶山市| 崇左市| 桓台县| 衡东县| 蒙山县| 化隆| 普格县| 通道| 绍兴市| 修武县| 滕州市| 兴国县| 修文县| 香格里拉县| 新田县| 固原市| 寻甸| 故城县| 峨眉山市| 九寨沟县| 广南县| 淳化县| 大化| 云龙县| 伊宁市| 汉中市| 莱阳市| 进贤县| 开封县| 古交市| 凤山市| 双江| 红安县| 德化县| 海林市| 嘉祥县| 桃园县| 温泉县| 红安县| 宜兰县| 双鸭山市|