web-dev-qa-db-fra.com

Activer la notification de mise à jour, désactiver les mises à jour

Il y a beaucoup de questions sur la façon de désactiver les mises à jour et/ou de supprimer les notifications de mise à jour. Mais toutes les solutions qui désactivent la mise à jour désactivent également les notifications de mise à jour.

Mais je veux désactiver la possibilité de mettre à jour tout en étant averti des mises à jour disponibles.

J'utilise actuellement define( 'DISALLOW_FILE_MODS', true );Codex } _

Le problème, c’est qu’il désactive non seulement le processus de mise à jour, mais également les notifications.

Edit: Ok, je suis moi-même descendu dans le terrier du lapin. J'imagine que je devrais également préciser que je ne parle pas (uniquement) des mises à jour principales, mais aussi des plugins et des thèmes.

Si je comprends bien, c'est parce que, à /wp-admin/includes/update.php:250 , la fonction retourne plus tôt.

Je vois donc deux options:

  • rajoutez l'option update_plugins qui annule le type d'objet plus je ne suis pas sûr des effets secondaires
  • ajouter mon propre crochet à admin_init le type de réplication wp_plugin_update_rows. J'ai essayé ça mais ça ne se ressemble toujours pas. Cela semble être quelque chose de plus, cela ne semble pas non plus être une façon très propre de le faire.

EDIT: Il existe un ticket couvrant cette question au cas où vous voudriez y travailler: https://core.trac.wordpress.org/ticket/25219

10
kraftner

Ajoutez le code suivant dans le functions.php de votre thème enfant ou personnalisez-le pour l'activer/le désactiver facilement:

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;
    }
}

Cela devrait vous donner quelque chose à travailler. Il supprime les liens de mise à jour de la barre latérale et de la barre d’outils du Tableau de bord tout en laissant les notifications de mise à jour activées.

Cependant, le update now sera toujours affiché sous chaque plugin, ce qui permettrait à l'utilisateur d'effectuer des mises à jour:

 enter image description here 

Une solution consiste à masquer le lien via CSS. Je ne pouvais pas tout à fait réussir cette partie, mais étant donné que cette question est très ancienne, je ne voulais pas perdre de temps non plus. J'ai senti que cette question méritait d'être réglée.

1