wp_send_user_request( string $request_id ): true|WP_Error

Send a confirmation request email to confirm an action.

Description

If the request is not already pending, it will be updated.

Parameters

$request_idstringrequired
ID of the request created via wp_create_user_request() .

Return

true|WP_Error True on success, WP_Error on failure.

Source

function wp_send_user_request( $request_id ) {	$request_id = absint( $request_id );	$request = wp_get_user_request( $request_id );	if ( ! $request ) {	return new WP_Error( 'invalid_request', __( 'Invalid personal data request.' ) );	}	// Localize message content for user; fallback to site default for visitors.	if ( ! empty( $request->user_id ) ) {	$switched_locale = switch_to_user_locale( $request->user_id );	} else {	$switched_locale = switch_to_locale( get_locale() );	}	$email_data = array(	'request' => $request,	'email' => $request->email,	'description' => wp_user_request_action_description( $request->action_name ),	'confirm_url' => add_query_arg(	array(	'action' => 'confirmaction',	'request_id' => $request_id,	'confirm_key' => wp_generate_user_request_key( $request_id ),	),	wp_login_url()	),	'sitename' => wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES ),	'siteurl' => home_url(),	);	/* translators: Confirm privacy data request notification email subject. 1: Site title, 2: Name of the action. */	$subject = sprintf( __( '[%1$s] Confirm Action: %2$s' ), $email_data['sitename'], $email_data['description'] );	/** * Filters the subject of the email sent when an account action is attempted. * * @since 4.9.6 * * @param string $subject The email subject. * @param string $sitename The name of the site. * @param array $email_data { * Data relating to the account action email. * * @type WP_User_Request $request User request object. * @type string $email The email address this is being sent to. * @type string $description Description of the action being performed so the user knows what the email is for. * @type string $confirm_url The link to click on to confirm the account action. * @type string $sitename The site name sending the mail. * @type string $siteurl The site URL sending the mail. * } */	$subject = apply_filters( 'user_request_action_email_subject', $subject, $email_data['sitename'], $email_data );	/* translators: Do not translate DESCRIPTION, CONFIRM_URL, SITENAME, SITEURL: those are placeholders. */	$content = __(	'Howdy, A request has been made to perform the following action on your account: ###DESCRIPTION### To confirm this, please click on the following link: ###CONFIRM_URL### You can safely ignore and delete this email if you do not want to take this action. Regards, All at ###SITENAME### ###SITEURL###'	);	/** * Filters the text of the email sent when an account action is attempted. * * The following strings have a special meaning and will get replaced dynamically: * * ###DESCRIPTION### Description of the action being performed so the user knows what the email is for. * ###CONFIRM_URL### The link to click on to confirm the account action. * ###SITENAME### The name of the site. * ###SITEURL### The URL to the site. * * @since 4.9.6 * * @param string $content Text in the email. * @param array $email_data { * Data relating to the account action email. * * @type WP_User_Request $request User request object. * @type string $email The email address this is being sent to. * @type string $description Description of the action being performed so the user knows what the email is for. * @type string $confirm_url The link to click on to confirm the account action. * @type string $sitename The site name sending the mail. * @type string $siteurl The site URL sending the mail. * } */	$content = apply_filters( 'user_request_action_email_content', $content, $email_data );	$content = str_replace( '###DESCRIPTION###', $email_data['description'], $content );	$content = str_replace( '###CONFIRM_URL###', sanitize_url( $email_data['confirm_url'] ), $content );	$content = str_replace( '###EMAIL###', $email_data['email'], $content );	$content = str_replace( '###SITENAME###', $email_data['sitename'], $content );	$content = str_replace( '###SITEURL###', sanitize_url( $email_data['siteurl'] ), $content );	$headers = '';	/** * Filters the headers of the email sent when an account action is attempted. * * @since 5.4.0 * * @param string|array $headers The email headers. * @param string $subject The email subject. * @param string $content The email content. * @param int $request_id The request ID. * @param array $email_data { * Data relating to the account action email. * * @type WP_User_Request $request User request object. * @type string $email The email address this is being sent to. * @type string $description Description of the action being performed so the user knows what the email is for. * @type string $confirm_url The link to click on to confirm the account action. * @type string $sitename The site name sending the mail. * @type string $siteurl The site URL sending the mail. * } */	$headers = apply_filters( 'user_request_action_email_headers', $headers, $subject, $content, $request_id, $email_data );	$email_sent = wp_mail( $email_data['email'], $subject, $content, $headers );	if ( $switched_locale ) {	restore_previous_locale();	}	if ( ! $email_sent ) {	return new WP_Error( 'privacy_email_error', __( 'Unable to send personal data export confirmation email.' ) );	}	return true; } 

Hooks

apply_filters( ‘user_request_action_email_content’, string $content, array $email_data )

Filters the text of the email sent when an account action is attempted.

apply_filters( ‘user_request_action_email_headers’, string|array $headers, string $subject, string $content, int $request_id, array $email_data )

Filters the headers of the email sent when an account action is attempted.

apply_filters( ‘user_request_action_email_subject’, string $subject, string $sitename, array $email_data )

Filters the subject of the email sent when an account action is attempted.

Changelog

VersionDescription
4.9.6Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.