Cette question peut être erronée, je n'en suis pas sûr. Parce que je ne suis pas clair là-dessus.
je sais add_action
qu'il est utilisé pour accrocher notre fonction à la fonction spécifiée. Par exemple, add_action('wp_head'.'myfunc');
maintenant, tout ce qui myfunc
sera codé sera exécuté dans le wp_head()
. C'est clair mais j'ai des doutes sur do_action
ce que ça fait?
Je pense qu'il est utilisé pour créer notre propre crochet comme les crochets déjà disponibles (wp_head, wp_footer, .. etc) Si je me trompe, quelqu'un peut-il me montrer une réponse simple et compréhensible avec un exemple simple.
J'ai essayé la différence sur Internet mais tous pointent vers la différence entre add_action et add_filter. Je ne veux pas y aller parce que je veux d'abord clarifier cela et ensuite je vais y aller.
Quelqu'un peut-il m'aider?
MODIFIER après la question POST
function custom_register()
{
echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';
}
do_action('custom');
add_action('custom','custom_register');
J'ai essayé cela dans le plugin mais je n'ai pas reçu le message d'alerte.
Mais quand j'accroches la même fonction avec wp_head
alors ça marche bien
/******************working****************/
add_action('wp_head','custom_register');
do_action('custom');
après avoir enregistré le rappel? Et assurez-vous que jQuery est chargé.wp_head
elle fonctionne bien mais pas aveccustom
Réponses:
Utilisez
do_action( 'unique_name' )
pour créer vos propres actions.Vous pouvez l'utiliser pour proposer une API pour votre plugin , afin que d'autres plugins puissent enregistrer des rappels pour votre action personnalisée. Exemple: dois-je appeler do_action dans mon plugin?
Mais vous pouvez également utiliser des actions personnalisées (ou des filtres) dans un thème. Exemple: méthode recommandée pour implémenter des sections personnalisées dans un thème WordPress
Et vous pouvez combiner les deux pour créer un plugin et un thème qui fonctionnent ensemble. Exemple: Comment rendre la méthode du plugin disponible dans le thème?
Résumé:
add_action( 'foo' )
enregistre un rappel,do_action( 'foo' )
exécute ce rappel enregistré.la source
Ceci est ma conjecture, donc si vous savez mieux, veuillez faire un commentaire afin que je puisse mettre à jour ma conjecture.
Votre code de plugin est exécuté avant
wp_head()
(ce qui, nous pouvons supposer, invoquera les actions qui y sont ajoutées). Quand vousadd_action('wp_head','custom_register')
, vous dites à PHP que quand (dans le futur)do_action('wp_head')
sera appelé,custom_register()
aussi. Il en va de même pour votre appel àadd_action('custom','custom_register')
mais comme vous le voyez dans votre code, l'appel àdo_action('custom')
a déjà été fait, et quand il a été appelé, aucune action n'a été (encore) ajoutée. C'est pourquoi Toscho a demandé ce qui se passe lorsque vous appelezdo_action('custom')
après avoir enregistré le rappel. Votre réponse concernant le back-end et le front-end est ambiguë. Si vous échangez les deux dernières lignes dans le code suivant, je pense que cela fonctionnera:la source
do_action
: Enregistre un hook d'action pendant queadd_action
: ajoute une fonction de rappel au hook enregistré.Exemple
Considérez que vous vouliez imprimer quelque chose avant la barre latérale dans votre modèle.
index.php
via<?php add_action('bp_sidebar_left'); ?>
.functions.php
fichier, vous pouvez ajouter une fonction de rappel à ce crochet pour imprimer quelque chose que vous voulez.add_action('bp_sidebar_left', 'bp_sidebar_left_cb'); function bp_sidebar_left_cb() { echo 'Hello World !'; }
la source
Vous devez utiliser comme ci-dessous:
la source