問題描述

我已經在我的網站上安裝了 Google Analyticator plugin 。我還使用 MobilePress plugin 來為 non-smart-phone 移動瀏覽器設計的主題。我已經設定了 Google Analytics for Mobile 用於此主題,並希望停用 Analyticator 外掛,因為它包含一個更大的 js 檔案的呼叫。

有人知道是否可以使用 functions.php 或其他方法停用外掛?

我相信我已經找到了向頁面新增功能的程式碼,所以如果無法停用整個外掛,是否可以停止執行的操作?我試圖直接停用它們,沒有運氣。這是外掛檔案中的程式碼:

add_action('wp_head', 'add_google_analytics', 999999);
add_action('init', 'ga_outgoing_links');

我試圖刪除這些行動:

remove_action('wp_head','add_google_analytics',9999999);
remove_action('init', 'ga_outgoing_links');

任何幫助是極大的讚賞。

最佳解決方案

當 WordPress 啟用一個外掛時,它會呼叫 activate_plugin()函式。此功能可在沙箱中啟用該外掛,並在其他地方重定向成功。幾個作者使用它來程式設計地啟用外掛依賴。

還有另一個功能,deactivate_plugin(),反過來做類似的事情,它實際上是當您點選”deactivate” 或”disable.” 時,WordPress 如何停用 plug-ins

要停用已安裝的外掛,只需呼叫:

deactivate_plugins( '/plugin-folder/plugin-name.php' );

或者,一次停用多個外掛:

deactivate_plugins( array( '/first-plugin/first.php', '/second-plugin/second.php' ) );

有一個第二個引數 (第一個是要停用的外掛的字串或陣列),允許您停用外掛而不呼叫停用掛接。預設情況下,它設定為 false,我建議您這樣做。除非由於某種原因你想繞過去啟用,否則你會做:

deactivate_plugins( '/plugin-folder/plugin-name.php', true );

這將只是關閉外掛,但它不會啟動任何外掛註冊做停用。因此,如果外掛在停用時刪除選項或資料庫表,則需要執行 「靜默」 停用以保留該資訊並在其他位置使用它。

次佳解決方案

這是感謝上面的 EAMAN 的輝煌的回答,我以為這可能對原來的海報也有幫助嗎?

我需要一個解決方案,以確保使用者停用我的外掛,如果他們上傳了高階版本 (以避免潛在的衝突) 。以前,我使用 is_plugin_active 檢測到狀態,並顯示管理錯誤訊息,提示使用者將其關閉。這是更平穩…

function deactivate_plugin_conditional() {
    if ( is_plugin_active('plugin-folder/plugin-name.php') ) {
    deactivate_plugins('plugin-folder/plugin-name.php');
    }
}
add_action( 'admin_init', 'deactivate_plugin_conditional' );

注意:register_activation_hook 似乎沒有起作用,但 admin_init 的作用就像一個魅力。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。