問題描述

有沒有辦法禁用特定插件的更新通知?

作為插件開發人員,我的個人網站上安裝了一些插件,使用 svn trunk 版本進行測試,但從插件網站可以看到相同的插件。在這些情況下,WP 認為最新版本是最新發布的版本,並不斷嘗試警告我有更新可用。

我仍然希望看到有關其他插件更新的通知,但是不要忽視標題中的 Updates (2)通知,這樣做是不方便的。

最佳解決方案

例如,如果您不希望 Wordpress 顯示 akismet 的更新通知,您可以這樣做:

function filter_plugin_updates( $value ) {
    unset( $value->response['akismet/akismet.php'] );
    return $value;
}
add_filter( 'site_transient_update_plugins', 'filter_plugin_updates' );

次佳解決方案

Hameedullah Khan 的答案將會引發一個 PHP 警告。包括這個 if 子句來檢查,以確定它是一個對象,然後取消設置該插件的響應。

‘ 警告:嘗試修改 non-object 的屬性’

嘗試這樣做以避免警告 (插件文件本身的代碼):

// remove update notice for forked plugins
function remove_update_notifications($value) {

    if ( isset( $value ) && is_object( $value ) ) {
        unset( $value->response[ plugin_basename(__FILE__) ] );
    }

    return $value;
}
add_filter( 'site_transient_update_plugins', 'remove_update_notifications' );

我喜歡將其放在實際的插件中。由於我只是在一個插件上禁用更新,因為我已經修改或分配了代碼,並且不希望在更新時丟失編輯內容,所以我已經編輯了插件,因此不用介意編輯它。它使我的功能文件有點清潔。但是如果您希望可以將其放在函數文件中,並且該方法的好處是您可以通過為該插件添加另一個未設置的行 (通過 functions.php 編寫代碼),可以從更新中刪除多個插件:

// remove update notice for forked plugins
function remove_update_notifications( $value ) {

    if ( isset( $value ) && is_object( $value ) ) {
        unset( $value->response[ 'hello.php' ] );
        unset( $value->response[ 'akismet/akismet.php' ] );
    }

    return $value;
}
add_filter( 'site_transient_update_plugins', 'remove_update_notifications' );

參考文獻

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