禁用单个插件的更新通知


49

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

作为一个插件开发人员,我在个人站点上使用svn干线版本安装了一些插件进行测试,但是可以从该插件站点上使用相同的插件。在这些情况下,WP会将最新版本视为最新发布的版本,并不断尝试警告我有可用的更新。

我仍然希望看到其他插件的更新通知,但是不断忽略Updates (2)标题中的通知真是令人讨厌!


只需打开插件文件并将版本号更改为9.9.9
Bainternet,2011年

抱歉@Bainternet,但是这样做太骇客了,因为该站点是svn-checkout,并且插件来自svn:external对插件开发代码的引用。在生产服务器上拥有本地修改的文件不是一种选择。Hameedullah的筛选器起作用,因为它已保存在该站点的代码存储库中。
Caleb

是的,我错过了有关该网站在svn上运行的部分
Bainternet 2011年

您也可以只使用WordPress.org上Websiteguy 的Disable Updates Manager插件。
马修2014年

Answers:


67

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

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

1
我将其放置在的末尾./wp-config.php,替换了插件文件路径,即可完成工作。
Caleb

6
您可以将其放在主题的functions.php中,如果不可能的话,可以放入单独的插件文件中。我认为将其放入wp-config.php不是一个好主意。
Hameedullah Khan 2011年

1
我真的不希望我的功能与主题相关,添加插件似乎就像对我所拥有的插件进行黑客一样多。您能解释一下为什么您认为wp-config.php不是放置特定于站点的配置黑客的好地方吗?
Caleb

很好的解决方案,在functions.php中对我来说效果很好。只需添加另一个unset(),就可以轻松地将更多插件添加到列表中...好提示Hameedullah ..
Lars Koudal 2011年

2
对于与@Caleb相同的注释,在wp-content文件夹中mu-plugins创建一个名为:的新文件夹,然后创建一个小插件,将其插入其中。如上所述,某些人添加它wp-config.php绝对是错误的选择。
查尔斯

30

Hameedullah Khan的答案将抛出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' );

我喜欢把它放在实际的插件中。由于我只是因为编辑或分叉了代码并且不想丢失对更新的修改而只禁用了插件的更新,因此我已经编辑了插件,因此不介意对其进行更多编辑。它使我的功能文件更整洁。但是,如果您希望将其放入功能文件中,那么该方法的好处就是您可以通过为该插件添加另一条未设置的行来从更新中删除多个插件,如下所示(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' );

为此。我在直接在插件中使用此代码时遇到问题,当它是一个插件时似乎还可以,但是当我与其他插件(差异功能名称)一起使用时,我就丢失了所有插件的通知以及wp-repo插件的“查看详细信息”链接不见了 使用您的支票但放置在我主题的functions.php中,它更加可靠,而不会干扰其他插件的更新通知。最后,不在插件中的好处是不需要该插件处于活动状态才能正常工作。使用此代码禁用插件显然会再次显示更新通知。
菲利普·英格拉姆

2

禁用所有带有代码的更新通知

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核心,插件和主题的更新通知。


“单个插件”是关键
Gangesh

@Gangesh,我认为他想禁用某些特定插件的通知
Super Model
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.