wp_create_user_request

Advertisement

Summery Summery

Create and log a user request to perform a specific action.

Syntax Syntax

wp_create_user_request( string $email_address = '', string $action_name = '', array $request_data = array() )

Description Description

Requests are stored inside a post type named user_request since they can apply to both users on the site, or guests without a user account.

Parameters Parameters

$email_address

(Optional) User email address. This can be the address of a registered or non-registered user.

Default value: ''

$action_name

(Optional) Name of the action that is being confirmed. Required.

Default value: ''

$request_data

(Optional) Misc data you want to send with the verification request and pass to the actions once the request is confirmed.

Default value: array()

Return Return

(int|WP_Error) Returns the request ID if successful, or a WP_Error object on failure.

Source Source

File: wp-includes/user.php

	return $message;
}

/**
 * Create and log a user request to perform a specific action.
 *
 * Requests are stored inside a post type named `user_request` since they can apply to both
 * users on the site, or guests without a user account.
 *
 * @since 4.9.6
 *
 * @param string $email_address User email address. This can be the address of a registered or non-registered user.
 * @param string $action_name   Name of the action that is being confirmed. Required.
 * @param array  $request_data  Misc data you want to send with the verification request and pass to the actions once the request is confirmed.
 * @return int|WP_Error Returns the request ID if successful, or a WP_Error object on failure.
 */
function wp_create_user_request( $email_address = '', $action_name = '', $request_data = array() ) {
	$email_address = sanitize_email( $email_address );
	$action_name   = sanitize_key( $action_name );

	if ( ! is_email( $email_address ) ) {
		return new WP_Error( 'invalid_email', __( 'Invalid email address.' ) );
	}

	if ( ! $action_name ) {
		return new WP_Error( 'invalid_action', __( 'Invalid action name.' ) );
	}

	$user    = get_user_by( 'email', $email_address );
	$user_id = $user && ! is_wp_error( $user ) ? $user->ID : 0;

	// Check for duplicates.
	$requests_query = new WP_Query(
		array(
			'post_type'     => 'user_request',
			'post_name__in' => array( $action_name ), // Action name stored in post_name column.
			'title'         => $email_address,        // Email address stored in post_title column.
			'post_status'   => array(
				'request-pending',
				'request-confirmed',
			),
			'fields'        => 'ids',
		)
	);

	if ( $requests_query->found_posts ) {
		return new WP_Error( 'duplicate_request', __( 'An incomplete request for this email address already exists.' ) );
	}

Advertisement

Changelog Changelog

Changelog
Version Description
4.9.6 Introduced.

Advertisement

Leave a Reply