If WordPress is a living organism, then hooks are its nervous system. They carry signals and let developers tweak behaviors without performing open-heart surgery on core code.
Hooks come in two flavors:
- Actions (things that happen)
- Filters (things that change)
Now let’s look at the 10 best WordPress hooks that every developer should know — with real-world examples and a sprinkle of humor.
1. init
Why it’s awesome:
This hook is like the morning coffee of WordPress. It fires after WordPress has loaded but before anything fancy happens. Perfect for registering custom post types, taxonomies, or setting up your plugin.
add_action( 'init', function() {
register_post_type( 'pizza', [
'public' => true,
'label' => '🍕 Pizza',
] );
});Now your WordPress can serve pizzas. Sadly, not edible ones.
2. wp_enqueue_scripts
Why it’s awesome:
Because loading CSS/JS directly in your theme’s header is like brushing your teeth with peanut butter. This hook is the clean way to add scripts and styles.
add_action( 'wp_enqueue_scripts', function() {
wp_enqueue_style( 'my-style', get_stylesheet_uri() );
wp_enqueue_script( 'my-js', get_template_directory_uri() . '/main.js', [], false, true );
});No more spaghetti code. Just spaghetti dinners.
3. the_content
Why it’s awesome:
Want to add ads, disclaimers, or cat memes to posts automatically? This filter lets you change post content on the fly.
add_filter( 'the_content', function( $content ) {
if ( is_single() ) {
$content .= '<p><em>PS: Don’t forget to feed your devs with coffee.</em></p>';
}
return $content;
});Boom — instant footnotes. Or foot jokes.
4. widgets_init
Why it’s awesome:
Ever wanted your own widget area? This hook gives you the power.
add_action( 'widgets_init', function() {
register_sidebar( [
'name' => 'My Custom Sidebar',
'id' => 'custom_sidebar',
] );
});Now you can add anything from calendars to dancing GIFs in your sidebar. Freedom tastes good.
5. login_enqueue_scripts
Why it’s awesome:
Because you should absolutely theme the login page. Why let it stay boring when you can make it… fabulous?
add_action( 'login_enqueue_scripts', function() {
echo '<style> body { background-color: hotpink !important; } </style>';
});Your clients will never forget logging in. Ever. (Whether they thank you is another story.)
6. wp_footer
Why it’s awesome:
The catch-all place to inject scripts at the bottom of the page.
add_action( 'wp_footer', function() {
echo '<!-- Insert witty footer remark here -->';
});It’s like whispering a secret to your visitors right before they close the tab.
7. admin_menu
Why it’s awesome:
Need to add a custom settings page? This hook is your backstage pass to the WordPress admin menu.
add_action( 'admin_menu', function() {
add_menu_page( 'Secret Settings', 'Secret', 'manage_options', 'secret', function() {
echo '<h1>Shhh... Secret Settings</h1>';
});
});Every supervillain needs a control panel. Here’s yours.
8. save_post
Why it’s awesome:
Run custom logic every time a post is saved. Like auto-tweeting or adding “Edited by Gandalf.”
add_action( 'save_post', function( $post_id ) {
if ( wp_is_post_revision( $post_id ) ) return;
error_log( "Post $post_id just got saved. 🎉" );
});It’s like an event notification system, but for nerds.
9. wp_head
Why it’s awesome:
This hook lives in your theme’s <head>. Perfect for adding meta tags, favicons, or even Rickrolls.
add_action( 'wp_head', function() {
echo '<meta name="robots" content="index, follow">';
});Handle with care: misuse could turn your site into the SEO version of a black hole.
10. pre_get_posts
Why it’s awesome:
You can modify the main query before WordPress runs it. This is like hacking the Matrix — responsibly.
add_action( 'pre_get_posts', function( $query ) {
if ( $query->is_main_query() && !is_admin() && $query->is_home() ) {
$query->set( 'posts_per_page', 5 );
}
});Control the loop. Rule the world.
To summarize
Hooks are what make WordPress not just a CMS, but a playground. They let you customize almost anything without rewriting the core — which is both safe and very, very satisfying.
So go forth, experiment, and remember: “With great hooks comes great responsibility“.