The theme I'm using has a hook inside header.php
file to separate the header into two parts, left & right. I want to add some content into the right section but I don't understand how can I add the additional parameter when using add_action()
. Code as below,
do_action( 'sinatra_header_widget_location', 'left' );
get_template_part( 'template-parts/header/logo' );
do_action( 'sinatra_header_widget_location', 'right' );
How can I pass 'right'
parameter into add_action? my funcions.php looks like:
add_action('sinatra_header_widget_location', 'my_custom_function');
function my_custom_function() {
echo 'test';
}
The theme I'm using has a hook inside header.php
file to separate the header into two parts, left & right. I want to add some content into the right section but I don't understand how can I add the additional parameter when using add_action()
. Code as below,
do_action( 'sinatra_header_widget_location', 'left' );
get_template_part( 'template-parts/header/logo' );
do_action( 'sinatra_header_widget_location', 'right' );
How can I pass 'right'
parameter into add_action? my funcions.php looks like:
add_action('sinatra_header_widget_location', 'my_custom_function');
function my_custom_function() {
echo 'test';
}
Share
Improve this question
asked Oct 16, 2020 at 3:10
KenshinhKenshinh
351 silver badge4 bronze badges
1 Answer
Reset to default 2How can I pass 'right' parameter into
add_action
?
In short: You don't pass 'left' or 'right' itself to add_action()
, but you can make the parameter be available in your callback by using the fourth parameter for add_action()
. See examples below.
So despite you may already know this, a hook is a specific place in a block of (PHP) code where custom functions like yours (my_custom_function()
) can do a certain action like displaying a custom text, or maybe perform some database inserts.
And you can make that possible by using add_action()
to register your callback/function which then WordPress will call via do_action()
. I.e. add_action()
registers a callback for running an action on a hook, whereas do_action()
calls the callback that runs the action.
And there are different ways of calling add_action()
and do_action()
, but the basic ones are:
do_action()
:// This hook has just one parameter. do_action( 'hook name', $param ); // But this one has two parameters. do_action( 'hook name', $param, $param2 ); // And a hook can have as many parameters as necessary. do_action( 'hook name', $param, $param2, $param3, ... );
add_action()
:// This means the callback will receive just one parameter, add_action( 'hook name', 'function_name' ); // and it's equivalent to: add_action( 'hook name', 'function_name', 10, 1 ); // And same goes with this; but the priority is 9 - the default is 10, add_action( 'hook name', 'function_name', 9 ); // and it's equivalent to: add_action( 'hook name', 'function_name', 9, 1 ); // And this one, it uses the default priority, but accepts 2 parameters. add_action( 'hook name', 'function_name', 10, 2 );
So in your case, these do_action()
calls:
do_action( 'sinatra_header_widget_location', 'left' );
do_action( 'sinatra_header_widget_location', 'right' );
.. are identical to the first do_action()
example above, which means the hook (sinatra_header_widget_location
) has just one parameter, whereby the value is either left
or right
.
And by default, when WordPress — via do_action()
— calls callbacks registered to a hook, they will always receive the first parameter passed by the hook to do_action()
.
So you just need to make sure that your function accepts that first parameter.
( And the 2nd, 3rd, etc. parameters if there were any and that you wanted to access them from your callback. )
So for example, you can name it $position
and do a conditional to check whether the value is left
or right
, because the sinatra_header_widget_location
hook is being called twice — one with left
being the value of the first (and only) parameter, and the other being right
:
function my_custom_function( $position ) {
if ( 'right' === $position ) {
echo 'yay, it\'s "right"';
}
}
So I hope this revised answer helps you more :), and be sure to check the documentation for add_action()
and do_action()
because you'll find more information there, including user-contributed notes/examples that can assist you in using the functions (the proper way):
https://developer.wordpress/reference/functions/add_action/
https://developer.wordpress/reference/functions/do_action/