1. Hooked on WordPress
An Introduction to Actions & Filters
@shawnhooper - shawnhooper.ca
WordCamp Columbus
July 17, 2015
2. @shawnhooper - shawnhooper.ca
Hi, I’m Shawn
• Developing for the web since the mid-90s
!
• Using WordPress since ~ version 2.8 (2009)
!
• Chief Technology Officer at Actionable Books
!
• Lives in Ottawa, Canada
9. What is a Hook ?
@shawnhooper - shawnhooper.ca
Never Modify Core
10. What is a Hook ?
@shawnhooper - shawnhooper.ca
Hooks allow you to change the core functionality
of WordPress.
!
They are implemented through
themes and plugins.
11. What is a Hook ?
@shawnhooper - shawnhooper.ca
WordPress Plugin API
12. What is a Hook ?
@shawnhooper - shawnhooper.ca
There are two kinds of hooks in WordPress:
!
Actions and Filters
14. Action Hooks
@shawnhooper - shawnhooper.ca
An action is triggered when a
specific event takes place in WordPress.
15. Action Hooks
@shawnhooper - shawnhooper.ca
What can you do in an action?!
!
Modify data in the database
Send an e-mail
Interact with APIs
Modify code being sent to the browser
19. Action Hooks
@shawnhooper - shawnhooper.ca
The optional priority parameter allows you to
specify the order in which the hooked actions
will run.
!
The default value is 10.
22. Filter Hooks
@shawnhooper - shawnhooper.ca
Filters are functions that WordPress passes data
through, at certain points in execution, just before
taking some action with the data.
!
Source: WordPress Codex
26. Filter Hooks
@shawnhooper - shawnhooper.ca
The optional priority parameter allows you to
specify the order in which the hooked filters
will run.
!
The default value is 10.
27. Filter Hooks
@shawnhooper - shawnhooper.ca
function smh_old_post_notice($content) {
!
$days = floor( ( time() - get_the_date( 'U' ) ) / ( 60 * 60 * 24 ) );
!
if ( $days > 365 ) {
$content = '<div class="old_post">This is an older post. Beware of
possible out-of-date advice.</div>' . $content;
}
!
return $content;
}
!
add_filter(‘the_content’, ‘smh_old_post_notice’);
28. Hooks in Themes
@shawnhooper - shawnhooper.ca
99% of the time, you’ll use hooks and filters
in plugins.
!
But there are some times where it’s useful to put these
functions into your theme’s functions.php file.
29. Hooks in Themes
@shawnhooper - shawnhooper.ca
Examples:
!
Theme Activation Hook
Modifying the “Read More” Text
Filtering Menu Content
Setting up the Customizer
!
These are all things that are isolated to the active theme. If you
change themes, your site won’t break.
31. Extending Plugins
@shawnhooper - shawnhooper.ca
WordPress Core isn’t the only thing that can be extended
with hooks.
!
A well written plugin can also expose Actions and Filters
that will allow you to add, remove, or modify
its functionality.
32. Variable Hooks
@shawnhooper - shawnhooper.ca
Some hooks include variables in their names. These are very
powerful hooks that allow you to interact with only specific objects
in WordPress.
!
save_post_{$post_type}
ex: add_action ( ‘save_post_page’, ‘my_function’);
!
would only trigger when a page is being saved, not a post.
33. Pluggable Functions
@shawnhooper - shawnhooper.ca
A set of core WordPress functions that can be overridden in your
plugins.
!
They can all be found in wp-includespluggable.php
!
!
NOTE: No new pluggable functions are being added. They are
being replaced with filters, a more flexible solution.
34. Pluggable Functions
@shawnhooper - shawnhooper.ca
Only one plugin can make use of these functions. For safety, wrap
the function with the function_exists() check:
if ( ! function_exists( ‘wp_mail’ ) ) {
function wp_mail($to, $subject, $message, $headers = ‘’) {
// do stuff
}
}
35. Removing Hooks
@shawnhooper - shawnhooper.ca
You can also remove hooks that have already been put into place.
!
!
remove_action( $tag, $function_name, $priority );
!
remove_filter ($tag, $function_to_remove, $priority );
36. Removing Hooks
@shawnhooper - shawnhooper.ca
You can also remove ALL hooks that have already been put into
place.
!
!
remove_all_actions( $tag, $priority );
!
remove_all_filters ($tag, $priority );