Cette question peut être fausse, je n'en suis pas sûre. Parce que je ne suis pas clair à ce sujet.
Je sais que add_action
il est utilisé pour relier notre fonction à la fonction spécifiée. Par exemple, add_action('wp_head'.'myfunc');
, le code jamais utilisé dans myfunc
sera exécuté dans la wp_head()
. C’est clair, mais j’ai des doutes dans do_action
que fait-il?
Je pense qu'il est utilisé pour créer notre propre crochet, comme les crochets déjà disponibles (wp_head, wp_footer, etc.). Si j'ai raison, 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 indiquent la différence entre add_action et add_filter. Je ne veux pas y aller parce que je veux d’abord clarifier cela, puis je déménagerai là-bas.
Quelqu'un peut-il m'aider?
EDITafter 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é ceci dans le plugin mais je n'ai pas reçu le message d'alerte.
Mais quand j'accroche la même fonction avec wp_head
, alors ça fonctionne bien
/******************working****************/
add_action('wp_head','custom_register');
Utilisez do_action( 'unique_name' )
pour créer vos propres actions.
Vous pouvez l'utiliser pour proposer une API à 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 travaillant 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é.
C’est ma supposition, alors si vous le savez mieux, faites un commentaire pour que je puisse mettre à jour ma supposition.
Votre code de plugin est exécuté avant wp_head()
(nous pouvons supposer qu'il invoquera les actions qui y sont ajoutées). Lorsque vous add_action('wp_head','custom_register')
, vous dites à PHP que, lorsque (à l'avenir) do_action('wp_head')
sera appelé, d'appeler également custom_register()
. 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é effectué et, lors de son appel, aucune action n'a été ajoutée (encore). C'est pourquoi Toscho a demandé ce qui se passe lorsque vous appelez do_action('custom')
après vous avez enregistré le rappel. Votre réponse concernant le back-end et le front-end est ambiguë. Si vous échangez les deux dernières lignes du code suivant, je pense que cela fonctionnera:
function custom_register()
{
echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';
}
do_action('custom'); // This is called before it will have an effect.
add_action('custom','custom_register'); // Too late - do_action was already called.
do_action
: enregistre un action hook while add_action
: ajoute une fonction de rappel au hook enregistré.
Exemple
Considérez que vous vouliez imprimer quelque chose avant la barre latérale de votre modèle.
index.php
via <?php add_action('bp_sidebar_left'); ?>
.functions.php
, vous pouvez ajouter une fonction de rappel à ce hook pour imprimer ce que vous voulez.add_action('bp_sidebar_left', 'bp_sidebar_left_cb'); function bp_sidebar_left_cb() { echo 'Hello World !'; }