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 に答える