web-dev-qa-db-ja.com

更新通知を有効にし、更新を無効にする

更新を無効にする方法や更新通知を削除する方法については、多くの質問があります。しかし、アップデートを無効にするすべての解決策は、アップデート通知も無効にします。

しかし、私はまだ利用可能なアップデートについて通知されている間にアップデートする可能性を無効にしたいです。

現在私はdefine( 'DISALLOW_FILE_MODS', true );Codex を使っています

これの問題点は、アップデートプロセスだけでなく通知も無効になることです。

編集:さて、私はうさぎの穴を少し自分で降りました。私は(私が)コアアップデートだけでなく、プラグインやテーマについても話していることも明確にすべきだと思います。

私がそれを正しく理解しているならば、これは /wp-admin/includes/update.php:250 で関数が早く戻るからです。

2つの選択肢があります。

  • 目的を無効にしているupdate_pluginsオプションを再追加しました
  • admin_initを複製するwp_plugin_update_rowsに独自のフックを追加します。私はそれを試しましたが、それでもまだまったく同じには見えません。それにはもう少しあるようですが、これを行うための非常にきれいな方法のようにも感じません。

編集:あなたがそれに取り組む気がある場合に備えてこの問題をカバーするチケットがあります: https://core.trac.wordpress.org/ticket/25219

10
kraftner

次のコードをあなたの子テーマのfunctions.phpに追加するか、簡単に有効化/無効化するためのカスタムプラグインとしてパッケージ化してください。

add_action( 'wp_before_admin_bar_render', 'wpse161696_toolbar_menu' );
add_action( 'admin_menu', 'wpse161696_updates' );

function wpse161696_toolbar_menu() { // Remove update menu item from the toolbar
    global $wp_admin_bar;
    $wp_admin_bar -> remove_menu( 'updates' );
}

function wpse161696_updates() { // Remove all updating related functions
    remove_submenu_page( 'index.php', 'update-core.php' ); // Remove Update submenu
    // Redirect to Dashboard if update page is accessed
    global $pagenow;
    $page = array(
        'update-core.php',
        'update.php',
        'update.php?action=upgrade-plugin'
        );
    if ( in_array( $pagenow, $page, true ) ) {
        wp_redirect( admin_url( 'index.php' ), 301 );
        // wp_die( 'Updates are disabled.' ); // An error message can be displayed instead
        exit;
    }
}

これで何か問題が解決するはずです。更新通知をオンにしたまま、Dashboardのサイドバーとツールバーから更新リンクを削除します。

ただし、 update now は各プラグインの下に表示され、ユーザーは更新を実行できます。

enter image description here 

これに対する解決策はCSSを介してリンクを隠すことです。その部分をうまく動かすことはできませんでしたが、この質問が非常に古くなっているので、時間を無駄にしたくありませんでした。私はこの質問にそれをいくらか閉鎖する必要があると感じました。