J'écrivais un petit plugin pour supprimer certains éléments de menu pour les utilisateurs non administrateurs du backend, et j'ai découvert que mon plugin ne faisait rien sauf si je spécifiais une priorité dans mon code:
add_action('admin_bar_menu', 'remove_toolbar_items', 999);
Sans le 999
, le code ne supprime pas les éléments de ma remove_toolbar_items
fonction, et avec lui cela fonctionne très bien:
function remove_toolbar_items( $wp_admin_bar ) {
if ( !current_user_can( 'manage_options' ) ) {
$wp_admin_bar->remove_node('new-post');
$wp_admin_bar->remove_node('comments');
}
}
Les documents pour l'état du paramètre prioritaire:
Utilisé pour spécifier l'ordre dans lequel les fonctions associées à une action particulière sont exécutées. Les nombres inférieurs correspondent à une exécution antérieure et les fonctions de même priorité sont exécutées dans l'ordre dans lequel elles ont été ajoutées à l'action. Valeur par défaut: 10
Cependant, je n'ai rien trouvé qui explique comment vous êtes censé déterminer la priorité à utiliser. Comment déterminez-vous quand utiliser la priorité et quelle priorité utiliser? J'ai l'impression que j'aurais pu me gratter la tête pendant des heures si je n'avais pas joué avec le paramètre prioritaire.
De plus, je constate que la priorité par défaut est 10, mais existe-t-il une plage connue de valeurs de priorité?
WordPress met vos actions dans un tableau avec des priorités indexées. Vous pouvez le voir en imprimant (dans le panneau d'administration
admin_init
)$wp_filter
:* Remarque * comme @s_ha_dum le fait remarquer dans les commentaires ci-dessous, il se
admin_init
peut que tous les crochets ajoutés ne soient pas pris en compte dans l'action, l'impression plus fiable peut se connecter à lashutdown
place.Cela nous donne un tableau soigné qui ressemble à ceci: (simplifié)
Les 0, 4, 7, 10 et ainsi de suite sont les priorités des actions, lorsqu'une nouvelle action est ajoutée, sa valeur par défaut est 10, similaire à l'index 0 dans l'exemple ci-dessus, elles sont simplement empilées dans le même index du tableau . Étant donné que de nombreux crochets sont ajoutés à cette action particulière, vous voudriez tout à la fin ou enfin après l'exécution d'une action spécifique (comme les menus). Une des deux priorités pourrait également fonctionner aussi efficacement:
81
ou201
.Pour la plupart, la priorité par défaut de 10 est suffisante. D'autres fois, vous souhaitez ajouter votre crochet directement après l'autre (pour annuler son objectif ou supprimer un élément spécifique), auquel cas vous pouvez utiliser le
global $wp_filter;
pour déterminer où il doit aller.la source
admin_init
et seulement les choses accrochées à l'installation actuelle. Il ne dit rien sur ce qu'un plugin ou un thème non encore installé pourrait faire. +1 de toute façon.admin_footer
non? Ou serait-ce le même problème?shutdown
crochet serait votre meilleur pari, mais uniquement pour le code installé et même dans ce cas, les choses peuvent être liées de manière conditionnelle, il peut donc être possible d'en manquer de toute façon.Eh bien, il existe un moyen de trouver la priorité d'une action.
nous pouvons utiliser le code suivant
has_action( $tag, $function_to_check )
qui renvoie éventuellement la priorité sur ce crochet pour la fonction spécifiée.Réf: https://codex.wordpress.org/Function_Reference/has_action
la source
Juste au cas où quelqu'un chercherait la liste des priorités / références d'action WordPress, le lien de connexion complet est ici:
https://codex.wordpress.org/Plugin_API/Action_Reference/
la source