创建并记录用户请求以执行特定操作。

原型

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

描述

请求存储在名为user_request的帖子类型中,因为它们可以应用于站点上的用户或没有用户帐户的guest虚拟机。

参数

$email_address (string) (Optional) 用户邮箱地址。这可以是已注册或未注册用户的地址。

$action_name (string) (Optional) 正在确认的操作的名称。需要。

$request_data (array) (Optional) 你希望与验证请求一起发送的其他数据,并在确认请求后传递给操作。

返回值

(int|WP_Error)  如果成功则返回请求ID,或者a

源文件

路径:wp-includes/user.php

<?php
...
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'   => 'any',
		'fields'        => 'ids',
	) );
	if ( $requests_query->found_posts ) {
		return new WP_Error( 'duplicate_request', __( 'A request for this email address already exists.' ) );
	}
	$request_id = wp_insert_post( array(
		'post_author'   => $user_id,
		'post_name'     => $action_name,
		'post_title'    => $email_address,
		'post_content'  => wp_json_encode( $request_data ),
		'post_status'   => 'request-pending',
		'post_type'     => 'user_request',
		'post_date'     => current_time( 'mysql', false ),
		'post_date_gmt' => current_time( 'mysql', true ),
	), true );
	return $request_id;
}
...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/wp_create_user_request/