How 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):