1

我正在为我的客户开发一个插件,它会在核心、插件或主题更新可用时向我提供建议,并将其通过电子邮件发送给我。我想将激活此插件时的默认更新通知文本更改为“插件更新可用,但是更新由 xyz 公司管理”。

// 禁用核心更新

    # 2.3 to 2.7:
    add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 );
    add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) );

    # 2.8 to 3.0:
    remove_action( 'wp_version_check', 'wp_version_check' );
    remove_action( 'admin_init', '_maybe_update_core' );
    add_filter( 'pre_transient_update_core', create_function( '$a', "return null;" ) );

    # 3.0:
    add_filter( 'pre_site_transient_update_core', create_function( '$a', "return null;" ) );    

// Disable plugin updates

    # 2.3 to 2.7:
    add_action( 'admin_menu', create_function( '$a', "remove_action( 'load-plugins.php', 'wp_update_plugins' );") );
        # Why use the admin_menu hook? It's the only one available between the above hook being added and being applied
    add_action( 'admin_init', create_function( '$a', "remove_action( 'admin_init', 'wp_update_plugins' );"), 2 );
    add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_update_plugins' );"), 2 );
    add_filter( 'pre_option_update_plugins', create_function( '$a', "return null;" ) );

    # 2.8 to 3.0:
    remove_action( 'load-plugins.php', 'wp_update_plugins' );
    remove_action( 'load-update.php', 'wp_update_plugins' );
    remove_action( 'admin_init', '_maybe_update_plugins' );
    remove_action( 'wp_update_plugins', 'wp_update_plugins' );
    add_filter( 'pre_transient_update_plugins', create_function( '$a', "return null;" ) );

    # 3.0:
    remove_action( 'load-update-core.php', 'wp_update_plugins' );
    add_filter( 'pre_site_transient_update_plugins', create_function( '$a', "return null;" ) );
4

1 回答 1

12

这并不是问题的真正答案,但不幸的是,上面的代码遍布整个网络,而且非常不正确。虽然将 null 返回到 pre_site_ 过滤器确实会抑制通知消息,但它也会强制 wordpress 连续检查更新,因为它无法判断最后一次更新检查是什么时候进行的。

下面的代码(5.3+)实现了一个更好的版本,它可以在不对每个 WP 管理员请求进行 WP 运行更新检查的情况下抑制消息。

$func = function ($a) {
    global $wp_version;
    return (object) array(
        'last_checked' => time(),
        'version_checked' => $wp_version,
    );
};
add_filter('pre_site_transient_update_core', $func);
add_filter('pre_site_transient_update_plugins', $func);
add_filter('pre_site_transient_update_themes', $func);
于 2013-02-18T11:20:38.793 回答