J'ai ajouté avec succès des avis d'administration à afficher sur register_activation_hook
, et lorsque le plug-in est mis à jour, mais je ne vois aucun moyen d'afficher admin_notices
après les points d'ancrage de désinstallation ou de désactivation. Est-ce possible? Sinon, pouvez-vous utiliser javascript à ce stade? (oui en quelque sorte).
EDIT:
Pour répondre à @G. M. J'ai déjà lu la documentation et @kaiser. J'ai déjà vu votre superbe travail écrit sur ces crochets, mais à moins que je ne sois négligé et que je manque quelque chose, ces deux crochets semblent fonctionner différemment du crochet d'activation. Voici ce que j'ai testé:
Ceci ne permet pas d'afficher une notification sur la page d'administration, en cas de désactivation ou de désinstallation (bien qu'avec uniquement la désactivation , vous verrez le message affiché brièvement sur un écran blanc après le raccordement du hook, mais juste avant le rechargement de la page d'administration du plugin):
register_deactivation_hook(__FILE__, "gfahp_deactivate");
function gfahp_deactivate(){
$notices = sprintf('%sSome notice%s', '<div class="error fade"><p>', '</p></div>');
echo $notices;
}
Cela ne fonctionne pas non plus (sur l'un ou l'autre):
register_deactivation_hook(__FILE__, "gfahp_deactivate");
function gfahp_deactivate(){
add_action( 'admin_notices', 'gfahp_checks', 0 );
}
function gfahp_checks(){
$notices = sprintf('%sSome notice%s', '<div class="error fade"><p>', '</p></div>');
echo = $notices; // return does not work either
}
Javascript ne fonctionne pas sur la désactivation mais PAS désinstaller:
register_deactivation_hook(__FILE__, "gfahp_deactivate");
function gfahp_deactivate(){
$notices = 'Some notice';
echo "<script>window.alert('$notices');</script>";
}
La réponse courte est non, ce n'est pas possible. Lorsque vous désactivez votre plug-in, il est désactivé. Par conséquent, votre action admin_notices n'est pas exécutée lorsque l'écran d'administration est actualisé. Vous pouvez le confirmer vous-même en utilisant l'action d'une manière légèrement différente.
Dans votre fonction de désactivation, incluez la ligne suivante:
set_transient('my_deactivation_transient', 'My plugin is being deactivated', 100);
Faites en sorte que votre fonction admin_notices ressemble à ceci:
function my_admin_notices()
{
$message = get_transient('my_deactivation_transient');
if (empty($message)) return;
echo "<div class='error'><p>$message</p></div>";
}
Lorsque vous désactivez votre plugin, vous ne verrez aucun message. Lorsque vous réactiverez votre plugin, vous verrez le message. Ce n'est pas que la fonction admin_notices n'est pas appelée, c'est simplement que le plugin n'est pas actif lorsque l'écran d'administration est actualisé.