问题描述

有没有办法禁用特定插件的更新通知?

作为插件开发人员,我的个人网站上安装了一些插件,使用 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。