Using add_action hook in WordPress
WordPress hooks change how the WordPress behaves without needing to edit any PHP source files.
There are two types of hooks:
- Actions
- Filters
To use either you need:
- to write a custom function known as a Callback
- register the Callback to a specific action or filter.
In here I will explain actions. This uses add_action hook.
Actions will run at a specific point in time either from the:
- WordPress Core
- WordPress plugins,
- or WordPress themes.
Here I will provide simple working example for the add_action hook in WordPress:
function hello_header() {
echo "I'm in the header!";
}
add_action('wp_head', 'hello_header');
The result of adding this code to the functions.php file of my theme would be echoing “I’m in the header!” string.
Here wp_head represents the moment before the “head” section for the page is ready. Some other time moments are:
init— moment when creating a page, both front end and administrationadmin_init— the first thing done on every administration pageadmin_head— the last moment in the administration page’s “head” sectionadmin_menu— constructing the navigation menu in the administration pagestemplate_redirect— occurs before the theme template file has been chosenwp_enqueue_scripts— moment to eliminate duplicate scriptswp_enqueue_style— moment to eliminate duplicate styleswidgets_init— moment for constructing the list of active widgetsloop_startandloop_end— surrounding the Loopwp_footer— moment to insert additional stuff before closing thebodytag
And here is the complete WordPress hooks list. And here is the add_action hooks list.
How about adding meta keywords to our post via a hook? How do we get meta keywords from the post tags and categories?
Here is the code I used:
function add_metatags()
{
if (is_single()){
// posttags takes all post tags
$posttags = get_the_tags();
if ($posttags){
foreach($posttags as $tag){
$keywords[] = strtolower($tag->name);
}
}
// now adding post categories
foreach((get_the_category()) as $category){
$keywords[] = strtolower($category->cat_name);
}
$list = implode(", ", array_unique($keywords));
echo '';
}
}
add_action('wp_head', 'add_metatags');
Note, apart from the add_action hooks there are also add_filter hooks described in the tutorial to use add_filter hook.
Filters give you the ability to change data. Callback functions for filters will typically accept a variable, modify it, and than return it.
Filters should never affect the global variables and the output.
…
tags: add_action & category: wordpress