wp_create_user_request

函数
wp_create_user_request ( $email_address = '', $action_name = '', $request_data = array(), $status = 'pending' )
参数
  • (string) $email_address User email address. This can be the address of a registered or non-registered user.
    Required:
    Default: (empty)
  • (string) $action_name Name of the action that is being confirmed. Required.
    Required:
    Default: (empty)
  • (array) $request_data Misc data you want to send with the verification request and pass to the actions once the request is confirmed.
    Required:
    Default: array()
  • (string) $status Optional request status (pending or confirmed). Default 'pending'.
    Required:
    Default: 'pending'
返回值
  • (int|WP_Error) Returns the request ID if successful, or a WP_Error object on failure.
定义位置
相关方法
wp_get_user_requestwp_send_user_requestwp_generate_user_request_keywp_create_userwp_get_user_request_data
引入
4.9.6
弃用
-

wp_create_user_request: 这是一个创建新用户数据请求的函数。它可以用来生成对用户个人数据的请求或删除他们的数据。

创建并记录一个用户请求,以执行一个特定的行动。

请求被存储在一个名为`user_request`的文章类型中,因为它们可以适用于网站上的用户或没有用户账户的访客。

function wp_create_user_request( $email_address = '', $action_name = '', $request_data = array(), $status = 'pending' ) {
	$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 ( ! in_array( $action_name, _wp_privacy_action_request_types(), true ) ) {
		return new WP_Error( 'invalid_action', __( 'Invalid action name.' ) );
	}

	if ( ! in_array( $status, array( 'pending', 'confirmed' ), true ) ) {
		return new WP_Error( 'invalid_status', __( 'Invalid request status.' ) );
	}

	$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 personal data 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-' . $status,
			'post_type'     => 'user_request',
			'post_date'     => current_time( 'mysql', false ),
			'post_date_gmt' => current_time( 'mysql', true ),
		),
		true
	);

	return $request_id;
}

常见问题

FAQs
查看更多 >