WP_Recovery_Mode_Email_Service::maybe_send_recovery_mode_email() WordPress Method

The WP_Recovery_Mode_Email_Service::maybe_send_recovery_mode_email() method is responsible for sending an email to a user when their account is locked due to too many failed login attempts. This email includes a link that the user can use to reset their password and regain access to their account.

WP_Recovery_Mode_Email_Service::maybe_send_recovery_mode_email( int $rate_limit, array $error, array $extension ) #

Sends the recovery mode email if the rate limit has not been sent.


Parameters

$rate_limit

(int)(Required)Number of seconds before another email can be sent.

$error

(array)(Required)Error details from error_get_last().

$extension

(array)(Required)The extension that caused the error.

  • 'slug'
    (string) The extension slug. The plugin or theme's directory.
  • 'type'
    (string) The extension type. Either 'plugin' or 'theme'.


Top ↑

Return

(true|WP_Error) True if email sent, WP_Error otherwise.


Top ↑

Source

File: wp-includes/class-wp-recovery-mode-email-service.php

	public function maybe_send_recovery_mode_email( $rate_limit, $error, $extension ) {

		$last_sent = get_option( self::RATE_LIMIT_OPTION );

		if ( ! $last_sent || time() > $last_sent + $rate_limit ) {
			if ( ! update_option( self::RATE_LIMIT_OPTION, time() ) ) {
				return new WP_Error( 'storage_error', __( 'Could not update the email last sent time.' ) );
			}

			$sent = $this->send_recovery_mode_email( $rate_limit, $error, $extension );

			if ( $sent ) {
				return true;
			}

			return new WP_Error(
				'email_failed',
				sprintf(
					/* translators: %s: mail() */
					__( 'The email could not be sent. Possible reason: your host may have disabled the %s function.' ),
					'mail()'
				)
			);
		}

		$err_message = sprintf(
			/* translators: 1: Last sent as a human time diff, 2: Wait time as a human time diff. */
			__( 'A recovery link was already sent %1$s ago. Please wait another %2$s before requesting a new email.' ),
			human_time_diff( $last_sent ),
			human_time_diff( $last_sent + $rate_limit )
		);

		return new WP_Error( 'email_sent_already', $err_message );
	}


Top ↑

Changelog

Changelog
VersionDescription
5.2.0Introduced.

The content displayed on this page has been created in part by processing WordPress source code files which are made available under the GPLv2 (or a later version) license by theĀ Free Software Foundation. In addition to this, the content includes user-written examples and information. All material is subject to review and curation by the WPPaste.com community.