Recovery Mode Hooks

Actions and filters for the error protection and recovery mode system.

Source: Various recovery mode files


Actions

generate_recovery_mode_key

Fires when a recovery mode key is generated.

do_action( 'generate_recovery_mode_key', string $token, string $key )
Parameter Type Description
$token string The recovery data token
$key string The recovery mode key (plain text)

Since: 5.2.0
Source: class-wp-recovery-mode-key-service.php


wp_logout

Recovery mode hooks into this action to exit when user logs out.

do_action( 'wp_logout' )

Behavior: Calls WP_Recovery_Mode::exit_recovery_mode()

Since: 5.2.0 (recovery mode integration)


login_form_exit_recovery_mode

Custom login action for exiting recovery mode.

do_action( 'login_form_exit_recovery_mode' )

Behavior: Handles recovery mode exit request with nonce verification.

URL: wp-login.php?action=exit_recovery_mode&_wpnonce=...

Since: 5.2.0


recovery_mode_clean_expired_keys

Scheduled action to clean expired recovery mode keys.

do_action( 'recovery_mode_clean_expired_keys' )

Schedule: Daily (via wp_schedule_event)

Since: 5.2.0


Filters

recovery_mode_email_rate_limit

Filters the rate limit between recovery mode emails.

apply_filters( 'recovery_mode_email_rate_limit', int $rate_limit )
Parameter Type Default Description
$rate_limit int DAY_IN_SECONDS Time to wait in seconds

Since: 5.2.0
Source: class-wp-recovery-mode.php

Example:

// Allow recovery emails every 6 hours
add_filter( 'recovery_mode_email_rate_limit', function() {
    return 6 * HOUR_IN_SECONDS;
} );

recovery_mode_email_link_ttl

Filters how long the recovery mode link is valid.

apply_filters( 'recovery_mode_email_link_ttl', int $valid_for )
Parameter Type Default Description
$valid_for int Rate limit value Validity in seconds

Since: 5.2.0
Source: class-wp-recovery-mode.php

Note: TTL is forced to be at least as long as the email rate limit.

Example:

// Links valid for 3 days
add_filter( 'recovery_mode_email_link_ttl', function() {
    return 3 * DAY_IN_SECONDS;
} );

recovery_mode_cookie_length

Filters how long the recovery mode cookie is valid.

apply_filters( 'recovery_mode_cookie_length', int $length )
Parameter Type Default Description
$length int WEEK_IN_SECONDS Cookie validity in seconds

Since: 5.2.0
Source: class-wp-recovery-mode-cookie-service.php

Example:

// Cookie valid for 2 days only
add_filter( 'recovery_mode_cookie_length', function() {
    return 2 * DAY_IN_SECONDS;
} );

recovery_mode_email

Filters the contents of the recovery mode email.

apply_filters( 'recovery_mode_email', array $email, string $url )
Parameter Type Description
$email array Email components
$url string Recovery mode URL

Email Array:

Key Type Description
to string|array Recipient(s)
subject string Email subject
message string Message body
headers string|array Additional headers
attachments string|array File attachments

Since: 5.2.0, 5.6.0 (attachments key added)
Source: class-wp-recovery-mode-email-service.php

Example:

add_filter( 'recovery_mode_email', function( $email, $url ) {
    // Add CC to development team
    $email['headers'] = 'Cc: [email protected]';
    return $email;
}, 10, 2 );

recovery_email_support_info

Filters the support message in the recovery email.

apply_filters( 'recovery_email_support_info', string $message )
Parameter Type Default Description
$message string Host contact suggestion Support contact message

Since: 5.2.0
Source: class-wp-recovery-mode-email-service.php

Example:

add_filter( 'recovery_email_support_info', function() {
    return 'Contact our support team at [email protected] for assistance.';
} );

recovery_email_debug_info

Filters the debug information in the recovery email.

apply_filters( 'recovery_email_debug_info', array $debug )
Parameter Type Description
$debug array Debug info key-value pairs

Default Keys:

  • wp — WordPress version
  • theme — Active theme name and version
  • plugin — Failing plugin (if applicable)
  • php — PHP version

Since: 5.3.0
Source: class-wp-recovery-mode-email-service.php

Example:

add_filter( 'recovery_email_debug_info', function( $debug ) {
    $debug['memory'] = 'Memory limit: ' . ini_get( 'memory_limit' );
    $debug['server'] = 'Server: ' . $_SERVER['SERVER_SOFTWARE'];
    return $debug;
} );

recovery_mode_begin_url

Filters the URL to begin recovery mode.

apply_filters( 'recovery_mode_begin_url', string $url, string $token, string $key )
Parameter Type Description
$url string Generated recovery URL
$token string Recovery mode token
$key string Recovery mode key

Since: 5.2.0
Source: class-wp-recovery-mode-link-service.php


wp_fatal_error_handler_enabled

Filters whether the fatal error handler is enabled.

apply_filters( 'wp_fatal_error_handler_enabled', bool $enabled )
Parameter Type Default Description
$enabled bool true Whether handler is enabled

Since: 5.2.0
Source: error-protection.php

Important: This filter runs before plugins load. Must be configured in wp-config.php:

// wp-config.php - Disable recovery mode
$GLOBALS['wp_filter'] = array(
    'wp_fatal_error_handler_enabled' => array(
        10 => array(
            array(
                'accepted_args' => 0,
                'function'      => function() {
                    return false;
                },
            ),
        ),
    ),
);

Hooks Summary

Hook Type Purpose
generate_recovery_mode_key Action Key generation notification
recovery_mode_clean_expired_keys Action Scheduled key cleanup
recovery_mode_email_rate_limit Filter Email frequency control
recovery_mode_email_link_ttl Filter Link validity duration
recovery_mode_cookie_length Filter Cookie validity duration
recovery_mode_email Filter Email customization
recovery_email_support_info Filter Support message customization
recovery_email_debug_info Filter Debug info customization
recovery_mode_begin_url Filter URL customization
wp_fatal_error_handler_enabled Filter Enable/disable recovery mode