禁用单个插件的更新通知

时间:2011-06-21 作者:Caleb

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

作为一名插件开发人员,我在我的个人网站上安装了一些插件,使用svn trunk版本进行测试,但插件网站上也有相同的插件。在这些情况下,WP认为最新版本是最近发布的版本,并不断尝试警告我更新可用。

我仍然希望看到其他插件的更新通知,但经常忽略Updates (2) 注意页眉!

3 个回复
最合适的回答,由SO网友:Hameedullah Khan 整理而成

例如,如果您不想让Wordpress显示akismet的更新通知,您可以这样做:

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

SO网友:circlecube

HameedullahKhan的回答将抛出PHP警告。包括此if子句,以确保在取消设置该插件的响应之前它是一个对象。

\'警告:尝试修改非对象的属性\'

尝试此操作以避免警告(插件文件本身的代码):

// 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\' );
我喜欢把这个放在实际的插件中。由于我只会因为编辑或分叉了代码而禁用插件上的更新,并且不想丢失对更新的编辑,所以我已经编辑了插件,因此不介意再编辑它。它使我的函数文件更干净。但是,如果您希望将其放在函数文件中,那么该方法的一个好处是,您可以通过为该插件添加另一行未设置的代码(code for 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\' );

SO网友:dev

Disable All Update Notifications with Code

function remove_core_updates(){
        global $wp_version;return(object) array(\'last_checked\'=> time(),\'version_checked\'=> $wp_version,);
    }
    add_filter(\'pre_site_transient_update_core\',\'remove_core_updates\');
    add_filter(\'pre_site_transient_update_plugins\',\'remove_core_updates\');
    add_filter(\'pre_site_transient_update_themes\',\'remove_core_updates\');
代码将禁用WordPress核心、插件和主题的更新通知。

结束