Il y a un crochet d'action déclenché dans admin.php
appelé 'admin_action_'.$_REQUEST['action']
. Malheureusement, c'est un peu inutile pour les plugins car il est déclenché à la toute fin de admin.php, après que tout soit chargé sur la page (même le pied de page).
Est-ce que quelqu'un sait pourquoi c'est là, pourquoi dans cette position idiote et si quelque chose l'utilise en interne?
Via la fonction "Annoter" du Trac, vous pouvez voir qu'il a été ajouté il y a trois ans , après la demande de un gestionnaire générique POST que les plugins peuvent utiliser .
La recherche de code Google me dit que au moins Akismet utilise ce crochet , et il y figurait au moment où il a été introduit dans core . Cela fonctionne en appelant directement admin.php
(et non la page du plugin). À partir de là il peut juste faire une redirection à la fin . L'astuce consiste donc à appeler admin.php?action=your_action
, il n'est pas garanti que les autres URL fonctionnent.
De nombreuses pages d'administration (mais pas toutes) incluent admin.php
, comme une sorte d'initialisation. Dans ce cas, votre action serait déclenchée avant l'envoi de toute sortie, car la page d'administration inclut admin-header.php
après admin.php
. Cela ne fonctionnera pas sur toutes les pages d'administration: elles n'incluent pas toutes admin.php
, et d'autres vérifient les variables de requête "non autorisées" action
et vous donnent un "Êtes-vous sûr de vouloir faire cela?" warning ( à cause des absences manquantes? ). Pour un plugin, la page admin.php
fait tout : elle affiche l'en-tête ( sauf si la variable de requête noheader
est dans l'URL ), appelle votre page et affiche le pied de page (sauf si vous avez appelé exit()
dans votre code!). . admin.php
appelle ensuite exit()
lui-même, le hook admin_action_
n'y est même pas appelé.