文章首发于公众号【小白书签】: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