web-dev-qa-db-fra.com

Quels sont les avantages à ajouter au crochet dans le crochet init ()?

Je vois beaucoup de plugins utilisant cette approche pour ajouter un nouveau hook, par exemple.

add_action('init', function() {
   add_action('SOME_LATER_HOOK', xxx);
   add_filter('SOME_LATER_FILTER', yyy);
});

Pourquoi ne pas simplement ajouter le crochet directement? Je vois qu'il n'y a aucun avantage de toute façon, par exemple performance

Pourquoi pas juste

add_action('SOME_LATER_HOOK', xxx);
1
Yoga

Parfois, vous souhaitez exécuter du code avant de décider d'ajouter une action ou un filtre. Cela peut impliquer de vérifier les autorisations de l'utilisateur, de vérifier le type de demande de page, de vérifier si un autre plug-in est actif, etc.

Certaines de ces vérifications peuvent ne pas être possibles avant l'exécution de WordPress - il est donc assez courant de le faire avec un hook d'initialisation plutôt qu'avec l'inclusion d'un plugin.

Tout faire comme cela signifie que votre "initialisation" est au même endroit, même si certaines de vos actions ne l'exigent pas.

3
Lee Willis

Si nécessaire, il est plus facile de supprimer une fonction de init que deux (voire peut-être cinquante) de partout.

Il est généralement recommandé de ne rien exécuter avant le crochet init en général, ce qui en fait un point de départ typique, même s'il n'est pas forcé par des implications techniques requises .

2
Rarst

L'ajout de crochets sur les crochets me semble assez futile - un gaspillage de ressources. Si vous faites cela, vous avez deux appels ou plus à add_user_func_array() , où vous n'auriez sinon qu'un seul et cela ne doit pas mentionner l'autre travail qui est traitement effectué avant ce point.

Les exceptions sont:

  • Lorsque vous devez utiliser une fonction et que vous devez vous assurer que cette fonction est disponible. Ceci est parfois nécessaire avec les plugins mu, qui se chargent assez tôt, comme cela est fait ici . Un plug-in MU ne pourra utiliser le code de plug-in que s'il est connecté après le chargement des plug-ins, par exemple.
  • Ou quand un crochet a fourni des informations pas facilement disponibles dans le crochet qui fait le travail, comme dans cette réponse .

Il est également possible de "chaîner" des crochets pour fournir un peu de flexibilité à un code à usage spécifique .

0
s_ha_dum