禁用特定WordPress插件的自动升级

WordPress程序实现了后台插件的在线安装和在线升级,但有些朋友不想不想升级插件,也不愿意看到升级的提示,很碍眼,如何才能禁用这个插件的自动升级提示呢?

方法很简单,将插件所在的文件夹名,插件文件的名称,插件头文件中的插件名,这些统统修改为其他值,这样,该插件便不会被 WP.org 识别,也就不会有自动升级的问题。

另外还提供四种解决方法:
1. 完全禁用升级提示
完全禁用升级提示,请将以下代码写入插件的主文件中:

add_filter('option_update_plugins', 'plugin_prevent_upgrade');
function plugin_prevent_upgrade($opt){
$plugin = plugin_basename(__FILE__);
if($opt && isset($opt->response[$plugin])){
//有升级提示?去除之
unset($opt->response[$plugin]);
}
return $opt;
}

这个方案的缺点是,不知道有该插件的升级存在,除非查看它的站点。这是最绝的方法。

2. 保留升级提示,但去除升级链接

add_filter('option_update_plugins', 'plugin_prevent_upgrade');
function plugin_prevent_upgrade($opt){
$plugin = plugin_basename(__FILE__);
if($opt && isset($opt->response[$plugin])){
//有升级提示?去除自动升级的功能
$opt->response[$plugin]->package = '';
}
return $opt;
}

这样可以知道该插件有升级版本,但不通过自带的升级程序。自动的总是不放心。

3. 去除自动升级功能,替换为其他的提示信息

add_filter('option_update_plugins', 'plugin_prevent_upgrade');
function plugin_prevent_upgrade($opt){
$plugin = plugin_basename(__FILE__);
if($opt && isset($opt->response[$plugin])){
//有升级提示?去除之
unset($opt->response[$plugin]);

//自定义的提示信息
add_action("after_plugin_row_$plugin", 'plugin_update_disabled_notice');
}
return $opt;
}
function plugin_update_disabled_notice(){
echo '

这一招可以用在你的客户身上,客户不一定是专业的人员,万一出了什么问题呢,按照提示联系专业人士吧。

4. 保留升级提示,去除自动升级功能,同时加入其他的提示信息
add_filter('option_update_plugins', 'plugin_prevent_upgrade');
function plugin_prevent_upgrade($opt){
$plugin = plugin_basename(__FILE__);
if($opt && isset($opt->response[$plugin])){
//有升级提示?去除自动升级功能
$opt->response[$plugin]->package = '';
//自定义的提示信息
add_action("after_plugin_row_$plugin", 'plugin_update_disabled_notice');
}
return $opt;
}
function plugin_update_disabled_notice(){
echo '

小提示:禁止所有插件的升级提示
如果要禁止所有插件的升级提示,请在主题的 functions.php 中写入以下代码:
add_action('admin_menu', create_function('$a', "remove_action('admin_init', 'wp_update_plugins');"));
add_action('admin_menu', create_function('$a', "remove_action('admin_init', '_maybe_update_plugins');"));
add_action('admin_init', create_function('$a', "remove_action('load-plugins.php', 'wp_update_plugins');"));
add_action('plugins_loaded', create_function('$a', "remove_action('init', 'wp_update_plugins');"));
add_action('admin_init', create_function('$a', "remove_action('after_plugin_row', 'wp_plugin_update_row');"));

类似文章

5条评论

已关闭评论。