wp_create_user_request()
Creates and logs 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.
Хуков нет.
Возвращает
int|WP_Error
. Returns the request ID if successful, or a WP_Error object on failure.
Использование
wp_create_user_request( $email_address, $action_name, $request_data, $status );
- $email_address(строка)
- User email address. This can be the address of a registered or non-registered user.
По умолчанию: '' - $action_name(строка)
- Name of the action that is being confirmed. Required.
По умолчанию: '' - $request_data(массив)
- Misc data you want to send with the verification request and pass to the actions once the request is confirmed.
По умолчанию: array() - $status(строка)
- Optional request status (pending or confirmed).
По умолчанию: 'pending'
Список изменений
С версии 4.9.6 | Введена. |
С версии 5.7.0 | Added the $status parameter. |
Код wp_create_user_request() wp create user request WP 6.7.1
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; }