To debug a hook look into the associated actions and filters. They are listed in $GLOBALS['wp_filter']
.
Sample plugin for debugging
<?php # -*- coding: utf-8 -*-
/**
* Plugin Name: T5 Debug Hook
* Description: Adds a list of registered filters and action for a hook. Call a page with <code>?hook=NAME</code> to see it.
*/
add_action( 'shutdown', 't5_debug_hook' );
function t5_debug_hook()
{
if ( ! isset ( $_GET['hook'] ) or ! current_user_can( 'update_core') )
{
return;
}
$f = $GLOBALS['wp_filter'];
if ( ! isset ( $f[ $_GET['hook'] ] ) )
{
print 'Nothing found for ' . esc_html( $_GET['hook'] );
return;
}
print '<pre>' . esc_html( var_export( $f[ $_GET['hook'] ], TRUE ) ) . '</pre>';
}
Sample output for example.com/?hook=wp_footer
array (
20 =>
array (
'wp_print_footer_scripts' =>
array (
'function' => 'wp_print_footer_scripts',
'accepted_args' => 1,
),
),
1000 =>
array (
'wp_admin_bar_render' =>
array (
'function' => 'wp_admin_bar_render',
'accepted_args' => 1,
),
),
)
The numbers (20
and 1000
here) stand for the priority or the order of execution.
Now you can deactivate single actions and filters until you find the slowest.
remove_action( 'wp_footer', 'wp_admin_bar_render', 1000 );
… will deactivate the last function.
Your site is rendering fine for me, so I guess it is the admin bar or a script loaded for logged in users only.