文章首发于公众号【小白书签】:https://mp.weixin.qq.com/s/Ta2txyWJ3LfMNdQJ2EcWYw
同一些软件情况类似,部分 WordPress 插件也是越更新越难用。虽然 WordPress 插件默认手动点击后才会更新,但一方面插件的更新提醒实在是碍眼,再者也容易不小心误操作。我们当然可以直接禁止 WordPress 检测版本升级,但通常又会导致所有插件都无法更新升级。那么,如果只想禁用特定的某一款或某几款插件的更新提醒,应该怎么办呢?小白直接上代码:
代码1
function disable_specific_plugin_updates( $value ) {
// 定义要禁用更新提示的插件
$plugins_to_disable = array(
'plugin-directory/plugin-file.php', // 第一个插件
'another-plugin-directory/another-plugin-file.php', // 第二个插件
);
// 检查是否存在插件更新响应
if ( isset( $value->response ) && is_array( $value->response ) ) {
// 遍历插件列表并移除更新提示
foreach ( $plugins_to_disable as $plugin ) {
if ( isset( $value->response[ $plugin ] ) ) {
unset( $value->response[ $plugin ] );
}
}
}
return $value;
}
add_filter( 'site_transient_update_plugins', 'disable_specific_plugin_updates' );
代码2
function wcr_remove_update_notifications($value) {
// 要禁用更新提示的插件列表
$plugins = array(
'example-plugin/example-plugin.php', // 第一个插件
// 这里可以添加更多插件
);
// 遍历插件列表
foreach ($plugins as $key => $plugin) {
// 检查插件是否有更新提示
if (empty($value->response[$plugin])) {
continue; // 如果没有更新提示,继续下一个插件
}
// 移除该插件的更新提示
unset($value->response[$plugin]);
}
// 返回修改后的更新信息对象
return $value;
}
// 将函数挂钩到插件更新检查过滤器
add_filter('site_transient_update_plugins', 'wcr_remove_update_notifications');
这两段代码的功能基本相同,都是用于禁用特定插件的更新提示。下面是两段代码的对比:
区别和优点
-
代码健壮性: -
代码1在循环之前检查了 $value->response
是否存在并且是数组,增加了健壮性,避免了潜在的错误。 -
代码2直接循环 $plugins
,每次循环时检查$value->response[$plugin]
是否为空,逻辑较为直接,但在某些情况下可能会略微低效。
-
-
效率: -
代码1在判断 $value->response
是否存在时,只做了一次判断,提高了效率。 -
代码2在每次循环时都做了 empty()
检查,略微增加了开销,但差异可以忽略不计。
-
选择及使用
代码1 在健壮性和可读性方面略胜一筹,它确保在操作前检查了必要的条件,减少了潜在的错误。因此,建议使用代码1。
不过,两段代码在实际使用中几乎没有性能差异,都可以完成禁用插件更新提示的任务。根据个人喜好任选一段,然后添加到当前主题“functions.php”文件中即可。您也可以自建一个插件,然后把所有自定义代码统一放到该插件,可以免受升级 WordPress 主题的影响。
最后,提醒一下,注意将代码中的插件路径替换为特定插件 php 文件的实际路径。
评论0