Using WordPress ‘deprecated_hook_run’ PHP action

The deprecated_hook_run WordPress PHP action fires when a deprecated hook is called.

Usage

add_action('deprecated_hook_run', 'your_custom_function', 10, 4);

function your_custom_function($hook, $replacement, $version, $message) {
  // your custom code here
}

Parameters

  • $hook (string): The hook that was called.
  • $replacement (string): The hook that should be used as a replacement.
  • $version (string): The version of WordPress that deprecated the argument used.
  • $message (string): A message regarding the change.

More information

See WordPress Developer Resources: deprecated_hook_run

Examples

Log Deprecated Hooks

Log all deprecated hooks to a custom log file.

add_action('deprecated_hook_run', 'log_deprecated_hooks', 10, 4);

function log_deprecated_hooks($hook, $replacement, $version, $message) {
  $log_message = "Deprecated Hook: {$hook} | Replacement: {$replacement} | Version: {$version} | Message: {$message}";
  error_log($log_message, 3, '/path/to/your/custom_log.log');
}

Notify Admin via Email

Send an email to the administrator when a deprecated hook is called.

add_action('deprecated_hook_run', 'notify_admin_deprecated_hook', 10, 4);

function notify_admin_deprecated_hook($hook, $replacement, $version, $message) {
  $admin_email = get_option('admin_email');
  $subject = "Deprecated Hook Alert";
  $body = "Deprecated Hook: {$hook}\nReplacement: {$replacement}\nVersion: {$version}\nMessage: {$message}";
  wp_mail($admin_email, $subject, $body);
}

Display Deprecated Hooks

Display a list of deprecated hooks in the admin area.

add_action('deprecated_hook_run', 'list_deprecated_hooks', 10, 4);

function list_deprecated_hooks($hook, $replacement, $version, $message) {
  $deprecated_hooks = get_option('deprecated_hooks_list', []);
  $deprecated_hooks[] = compact('hook', 'replacement', 'version', 'message');
  update_option('deprecated_hooks_list', $deprecated_hooks);
}

Display Deprecated Hooks Alert

Show an alert in the admin area when a deprecated hook is called.

add_action('deprecated_hook_run', 'deprecated_hooks_alert', 10, 4);

function deprecated_hooks_alert($hook, $replacement, $version, $message) {
  $alert_message = "Deprecated Hook: {$hook} | Replacement: {$replacement} | Version: {$version} | Message: {$message}";
  set_transient('deprecated_hook_alert', $alert_message, 60);
}

Disable Deprecated Hooks

Disable a specific deprecated hook from running by returning early.

add_action('deprecated_hook_run', 'disable_deprecated_hook', 10, 4);

function disable_deprecated_hook($hook, $replacement, $version, $message) {
  if ($hook === 'some_deprecated_hook') {
    return;
  }
  // your custom code here
}