This question might be wrong, I am not sure about it. Because I am not clear on this.
I know add_action
it is used to to hook our function to the specified function. For example add_action('wp_head'.'myfunc');
now what ever code in myfunc
will be executed in the wp_head()
. This is clear but i am having doubt in do_action
what it does?
I think it is used to create our own hook like already available hooks(wp_head,wp_footer,..etc) If i am correct can anyone show me a simple understandable answer with simple example.
I have tried the difference in internet but all are pointing to difference between add_action and add_filter. I don’t want to go there because first i want to clarify this and then Iâll move there.
Can anybody help me?
EDIT after Question POST
function custom_register()
{
echo '<script>jQuery(document).ready(function(){alert("Learning Hooks");});</script>';
}
do_action('custom');
add_action('custom','custom_register');
I tried this in plugin but i didn’t get the alert message.
But when i hook the same function with wp_head
then it is working fine
/******************working****************/
add_action('wp_head','custom_register');
Use
do_action( 'unique_name' )
to create your own actions.You can use that to offer an API for your plugin, so other plugins can register callbacks for your custom action. Example: Do I need to call do_action in my plugin?
But you can use custom actions (or filters) in a theme too. Example: Best practice way to implement custom sections into a WordPress theme
And you can combine both to make a plugin and a theme working together. Example: How to make method from plugin available in theme?
Summary:
add_action( 'foo' )
registers a callback,do_action( 'foo' )
executes that registered callback.This is my guess, so if you know better, please make a comment so I can update my guess.
Your plugin code is executed before
wp_head()
(which we can assume will invoke the actions added to it). When youadd_action('wp_head','custom_register')
, you are telling PHP that when (in the future)do_action('wp_head')
is called, to callcustom_register()
as well. The same is true of your call toadd_action('custom','custom_register')
but as you see in your code, the call todo_action('custom')
has already been made, and when it was called, there was not (yet) any action added to it.This is why Toscho asked what happens when you call
do_action('custom')
after you registered the callback. Your answer about back end and front end is ambiguous. If you swap the last two lines in the following code, I think it will work:do_action
: Registers an action hook whileadd_action
: adds a callback function to the registered hook.Example
Consider you wanted to print something before sidebar in you template.
index.php
via<?php add_action('bp_sidebar_left'); ?>
.functions.php
file you can add a callback function to that hook to print something you want.add_action('bp_sidebar_left', 'bp_sidebar_left_cb');
function bp_sidebar_left_cb() {
echo 'Hello World !';
}
You have to use like below: