DEV Community

Cover image for How to Find Hooks in a WordPress Plugin
Muhammad Medhat
Muhammad Medhat

Posted on • Edited on

How to Find Hooks in a WordPress Plugin

Introduction

Hooks are one of the most important concepts in WordPress. They allow you to extend or modify themes and plugins without editing their core code.

There are two main types of hooks:

  • Actions – let you run code at specific moments
    (example: init, wp_footer)

  • Filters – let you change data before it’s used or displayed
    (example: the_content, wp_title)

When you work with a plugin, you’ll often want to know:

  • Which hooks the plugin provides
  • Where you can safely attach your own code

Below are several practical ways to find those hooks.


1. Manually Searching Plugin Files (Finding Hooks the Plugin Provides)

If your goal is to know which hooks a plugin exposes for others to use, the most important things to look for are:

  • do_action()
  • apply_filters()

These functions define custom hooks created by the plugin itself.

Why this matters

  • do_action() → shows extension points where you can run your own code
  • apply_filters() → shows data you can modify

These are the hooks you usually care about when customizing a plugin.


Using the Terminal (Linux / macOS)

grep -r "do_action" /path/to/plugin/
grep -r "apply_filters" /path/to/plugin/
Enter fullscreen mode Exit fullscreen mode

Using Command Prompt (Windows)

findstr /S /I "do_action" "C:\path\to\plugin\*.*"
findstr /S /I "apply_filters" "C:\path\to\plugin\*.*"
Enter fullscreen mode Exit fullscreen mode

Using a Code Editor

  • VS Code: Ctrl + Shift + F → search for do_action or apply_filters
  • Notepad++: Use Find in Files (Ctrl + Shift + F)

When This Method Is Useful

  • Exploring a new plugin
  • Looking for customization points
  • Understanding how a plugin expects to be extended

This method shows what hooks exist, not necessarily when they run.


2. Using a Debugging Plugin

Sometimes you want to know which hooks actually run on a page.

A debugging plugin like Query Monitor can help with that.

Using Query Monitor

Steps:

  1. Install and activate Query Monitor
  2. Open any page on your site
  3. Open the Query Monitor panel
  4. Go to Hooks & Actions

You’ll see hooks that were executed during that request.

When this helps

  • Debugging plugin conflicts
  • Understanding execution order
  • Seeing what runs on frontend vs admin

3. Logging Hooks with Custom Code

If you need deeper insight, you can log hooks as they fire.

function log_all_hooks( $hook ) {
    error_log( $hook );
}
add_action( 'all', 'log_all_hooks' );
Enter fullscreen mode Exit fullscreen mode

Logs will be written to:

wp-content/debug.log
Enter fullscreen mode Exit fullscreen mode

To watch them live:

tail -f wp-content/debug.log
Enter fullscreen mode Exit fullscreen mode

⚠️ Important:
Only use this in development or staging. Logging all hooks creates a lot of output.


When to use this approach

  • Tricky debugging situations
  • Finding unexpected hook execution
  • Learning how a complex plugin behaves

4. Using WP-CLI to List Registered Hooks

WP-CLI doesn’t have a built-in command to list hooks, but you can create one.

Add a Custom WP-CLI Command

Place this code in functions.php or a small custom plugin:

if ( defined( 'WP_CLI' ) && WP_CLI ) {
    WP_CLI::add_command( 'hooks list', function () {
        global $wp_filter;

        foreach ( $wp_filter as $hook => $callbacks ) {
            WP_CLI::log( $hook );
        }
    });
}
Enter fullscreen mode Exit fullscreen mode

Run the Command

wp hooks list
Enter fullscreen mode Exit fullscreen mode

This outputs all registered hooks in the current request.


Filtering Hooks for a Specific Plugin

if ( defined( 'WP_CLI' ) && WP_CLI ) {
    WP_CLI::add_command( 'hooks list', function ( $args ) {
        global $wp_filter;

        $plugin_name = $args[0] ?? '';

        foreach ( $wp_filter as $hook => $callbacks ) {
            if ( ! $plugin_name || strpos( $hook, $plugin_name ) !== false ) {
                WP_CLI::log( $hook );
            }
        }
    });
}
Enter fullscreen mode Exit fullscreen mode

Run it like this:

wp hooks list woocommerce
Enter fullscreen mode Exit fullscreen mode

When WP-CLI Is Useful Here

  • You prefer working from the terminal
  • You want a fast overview
  • You don’t want to dig through files or browser tools

Conclusion

Finding hooks in a WordPress plugin is essential for customization and debugging.

Depending on what you need, you can use:

  • Manual search to find hooks a plugin provides
  • Debugging tools to see hooks in action
  • Logging for deep inspection
  • WP-CLI for fast, terminal-based exploration

In real projects, you’ll often combine more than one method — and that’s completely normal.

Top comments (0)