Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/colormyweb/wp-menu-delete-guard/archive/refs/heads/main.zipNo built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.
Petit plugin WordPress qui remplace la suppression native du menu (Apparence > Menus) par une modale de confirmation type-to-confirm.
Ce que ça fait
- Masque le lien natif "Supprimer le menu" (uniquement celui du menu global, pas les liens "Retirer" individuels des items).
- Ajoute un bouton "Supprimer le menu" à droite de la zone de publication, séparé du bouton "Enregistrer".
- Ouvre une modale d'alerte demandant de taper le nom exact du menu pour activer la suppression (convention GitHub).
- Support clavier complet :
Entréevalide,Échapannule, focus trap, focus restitué au déclencheur à la fermeture. - Respect de
prefers-reduced-motion.
Installation en plugin classique (pour tester)
- Copier le dossier
wp-menu-delete-guard/danswp-content/plugins/. - Activer via
Extensions. - Aller sur
Apparence > Menus, sélectionner un menu existant.
Passage en mu-plugin
Une fois validé :
- Copier uniquement le fichier
wp-menu-delete-guard.phpdanswp-content/mu-plugins/. - Créer un sous-dossier
wp-content/mu-plugins/wp-menu-delete-guard-assets/et y placer le dossierassets/. - Dans le PHP, adapter la constante
WPMDG_URLpour pointer vers ce sous-dossier :define( 'WPMDG_URL', WPMU_PLUGIN_URL . '/wp-menu-delete-guard-assets/' );(les mu-plugins ne peuvent pas être dans des sous-dossiers, mais leurs assets si — via un dossier annexe).
Alternative plus simple : garder tout le plugin dans un sous-dossier mu-plugins/wp-menu-delete-guard/ et créer un fichier loader mu-plugins/wp-menu-delete-guard-loader.php qui contient juste :
<?php
require_once __DIR__ . '/wp-menu-delete-guard/wp-menu-delete-guard.php';
Compatibilité
- Autonome : aucune interférence avec du JS custom de menu.
- N'affecte que l'écran
nav-menus.php. - Sélecteurs restreints :
#delete-action .submitdeleteet.submitdelete.deletion.menu-deleteuniquement (le lien "Retirer" des items utilise la même classe mais dans un contexte différent).
Licence
GPL-2.0-or-later — voir LICENSE