C’est assez rare comme demande mais je me suis exécuté : comment faire pour retirer le lien qui permet de supprimer les extensions désactivées dans l’interface d’administration, même si l’on est administrateur ?
Et bien c’est assez simple, il suffit de filtrer le tableau des liens. Voici deux exemples simples pour mettre cela en place.
Retirer le lien de suppression pour toutes les extensions
Voici le code qui vous permet de retirer le lien « Supprimer » qui se trouve en dessous de chaque extension sur la page Extensions:
<?php
add_filter( 'plugin_action_links', 'sky_disable_plugin_deletion', 10, 4 );
function sky_disable_plugin_deletion( $actions, $plugin_file, $plugin_data, $context ) {
unset( $actions['delete'] );
return $actions;
} Langage du code : HTML, XML (xml)
Retirer le lien de suppression pour des extensions spécifiques
Voici le code qui vous permet de retirer le lien « Supprimer » qui se trouve en dessous des extensions dont vous spécifiez le chemin (dossier et nom du fichier de l’extension à charger) sur la page Extensions:
<?php
add_filter( 'plugin_action_links', 'sky_disable_plugin_deletion_selected', 10, 4 );
function sky_disable_plugin_deletion_selected( $actions, $plugin_file, $plugin_data, $context ) {
if ( array_key_exists( 'delete', $actions ) && in_array( $plugin_file,
[
'akismet/akismet.php',
'redirection/redirection.php',
]
) ) {
unset( $actions['delete'] );
}
return $actions;
}Langage du code : HTML, XML (xml)
Dans ce dernier snippet, pensez à modifier le nom du répertoire et celui du plugin de manière à ce qu’ils coïncident avec les plugins qui ne doivent pas être supprimés.
A l’origine, c’était pour un de mes clients pour éviter que ses collaborateurs ne suppriment des plugins par inadvertance.
Je m’en sers également sous LocalWP pour éviter de supprimer un plugin en cours de développement – on ne sait jamais !