add_action (), add_filter () avant ou après la fonction

14

Lorsque je regarde les extraits / tutoriels / plugins de WordPress, je vois souvent add_action() et add_filter() placés avant la déclaration de la fonction:

add_action( 'publish_post', 'email_friends' );

function email_friends( $post_ID ) {
   $friends = '[email protected], [email protected]';
   mail( $friends, "sally's blog updated" , 'I just put something on my blog: http://blog.example.com' );
   return $post_ID;
}

D'un point de vue logique, cela n'a aucun sens pour moi. Pourquoi voudriez-vous placer la fonction après qu'elle soit appelée dans votre code? C’est généralement ainsi que je gérerais la même situation:

function email_friends( $post_ID )  {
   $friends = '[email protected], [email protected]';
   mail( $friends, "sally's blog updated" , 'I just put something on my blog: http://blog.example.com' );
   return $post_ID;
}

add_action( 'publish_post', 'email_friends' );

Je sais que les deux scénarios fonctionnent, mais existe-t-il un avantage spécifique pour l'un ou l'autre? Environ 90% du temps, je vois le premier scénario utilisé, alors cela me porte à penser que cela présente un avantage.

    
posée voodooGQ 26.09.2012 - 19:20

3 réponses

11

Il est plus facile de lire: Quand appelle-t-on quoi ? Si vous déboguez un hook, vous pouvez immédiatement voir si vous devez lire la fonction ou non: s'il ne s'agit pas de votre hook, vous pouvez ignorer le code.

Dans mes thèmes et plugins, je combine tous les enregistrements d'actions, de filtres et de codes courts en haut et . J'ajoute le point d'ancrage au bloc PHPDoc:

add_action( 'wp_head',  'foo' );
add_action( 'shutdown', 'bar' );

/**
 * Foo you!
 *
 * @wp-hook wp_head
 * @return  void
 */
function foo()
{
    print '<!-- foo -->';
}
    
réponse donnée fuxia 26.09.2012 - 19:32
6

Il n'y a pas vraiment de différence en fait, je préfère par exemple suivre le premier scénario, car il est préférable de passer des appels à un endroit et de définir des fonctions en dessous. PHP analyse tout le document avant d’exécuter quoi que ce soit, et si les fonctions sont correctement définies, tout fonctionnera normalement, aucun avantage dans les deux cas.

Je crois que le dicton droit est le suivant: Quelle que soit la flotte de votre bateau:)

    
réponse donnée OriginalEXE 26.09.2012 - 19:28
1

4 ans plus tard, mais je suis sûr que cela aidera les gens qui arrivent ici après une recherche.

Comme d'autres l'ont déjà indiqué, il n'y a pas de différence, car php analyse l'ensemble du document et s'exécute dans le bon ordre. Alors, comme tu veux.

Personnellement, j'aime bien le premier style:

add_action(hook, bar);
function bar(){
    //code here
}

J'ai tendance à penser en arrière. Orienté objectif si vous voulez. Donc, j'aime bien lire: "nous faisons la barre de fonction, en crochet. Ok cool, maintenant, qu'est-ce que la fonction fait?"

Cela permet de mieux définir le contexte de la fonction. Bien sûr, ce n’est que ma préférence personnelle. Alors fais ce que tu aimes.

    
réponse donnée John_911 14.10.2016 - 08:52

Lire d'autres questions sur les étiquettes