WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Is there a way to know what functions are hooked to a particular hook? For example if I'd like to know what functions are hooked to the wp_head hook.

share|improve this question
    
I'm pretty sure that this does what you want: @Rarst's Debug WordPress hooks – anu May 16 '11 at 14:23
    
take a look at this answer to a similar question and more specifically the plugin posted there by mike. – Bainternet May 16 '11 at 14:26
    
I could be wrong, but doesn't that just produce a comprehensive list of hooks? The way I'm reading the question is the he wants to know what functions are attached to the hook. – anu May 16 '11 at 14:37
    
Partially wrong, he said "for example what's hooked to wp_head", so its a full list not only a single hook. – Bainternet May 16 '11 at 15:21
    
Indeed, I wanted to see what functions are attached to a particular hook, so for example if 10 functions are hooked to wp_head then I'd like to list those 10. – javiervd May 16 '11 at 16:13
up vote 6 down vote accepted

Look into the global variable $wp_filter. See my plugin for a list of all comment filters for an example:

<?php
/*
Plugin Name: List Comment Filters
Description: List all comment filters on wp_footer
Version:     1.1
Author:      Thomas Scholz
Author URI:  http://toscho.de
License:     GPL v2
*/

add_action( 'wp_footer', 'list_comment_filters' );

function list_comment_filters()
{
    global $wp_filter;

    $comment_filters = array ();
    $h1  = '<h1>Current Comment Filters</h1>';
    $out = '';
    $toc = '<ul>';

    foreach ( $wp_filter as $key => $val )
    {
        if ( FALSE !== strpos( $key, 'comment' ) )
        {
            $comment_filters[$key][] = var_export( $val, TRUE );
        }
    }

    foreach ( $comment_filters as $name => $arr_vals )
    {
        $out .= "<h2 id=$name>$name</h2><pre>" . implode( "\n\n", $arr_vals ) . '</pre>';
        $toc .= "<li><a href='#$name'>$name</a></li>";
    }

    print "$h1$toc</ul>$out";
}

Sample output for pre_comment_author_email:

array (
  10 => 
  array (
    'trim' => 
    array (
      'function' => 'trim',
      'accepted_args' => 1,
    ),
    'sanitize_email' => 
    array (
      'function' => 'sanitize_email',
      'accepted_args' => 1,
    ),
    'wp_filter_kses' => 
    array (
      'function' => 'wp_filter_kses',
      'accepted_args' => 1,
    ),
  ),
)
share|improve this answer
    
Great little function toscho, thanks for sharing this. I'm using it to evaluate all of the action hooks loaded for a theme at the shutdown action. – Kevin Leary Feb 22 '12 at 16:01

For debug-purposes a simple

global $wp_filter;
echo "<pre>" . print_r($wp_filter, true) . "</pre>";

would do it ...

share|improve this answer

to see list of functions or actions hooked to a particular action hook you can use the following code.

global $wp_filter;
echo '<pre>';
var_dump( $wp_filter['wp_head'] );
echo '</pre>';
share|improve this answer

This shows a more readable list of filters

function print_filters_for( $hook = '' ) {
    global $wp_filter;
    if( empty( $hook ) || !isset( $wp_filter[$hook] ) ) return;

    $ret='';
    foreach($wp_filter[$hook] as $priority => $realhook){
        foreach($realhook as $hook_k => $hook_v){
            $hook_echo=(is_array($hook_v['function'])?get_class($hook_v['function'][0]).':'.$hook_v['function'][1]:$hook_v['function']);
            $ret.=  "\n$priority $hook_echo";
        }

    }
     return $ret;
}
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.