函数文档

show_user_form()

💡 云策文档标注

概述

show_user_form() 函数用于显示新用户账户注册表单的字段,包括用户名和邮箱输入框,并处理错误显示。

关键要点

  • 函数接受三个参数:$user_name(用户名)、$user_email(邮箱地址)和 $errors(WP_Error 对象或字符串,默认为空字符串)。
  • 如果 $errors 不是 WP_Error 对象,会初始化为新的 WP_Error 实例。
  • 输出用户名和邮箱的 HTML 输入字段,包含必要的属性和错误消息显示。
  • 在表单末尾触发 signup_extra_fields 钩子,允许开发者添加额外字段或自定义逻辑。
  • 函数内部使用了 __()、esc_attr()、do_action() 等 WordPress 核心函数。

代码示例

function show_user_form( $user_name = '', $user_email = '', $errors = '' ) {
    if ( ! is_wp_error( $errors ) ) {
        $errors = new WP_Error();
    }
    // 输出用户名字段
    echo '<label for="user_name">' . __( 'Username:' ) . '</label>';
    $errmsg_username = $errors->get_error_message( 'user_name' );
    if ( $errmsg_username ) {
        echo '<p class="error">' . $errmsg_username . '</p>';
    }
    echo '<input name="user_name" type="text" value="' . esc_attr( $user_name ) . '" />';
    // 输出邮箱字段
    echo '<label for="user_email">' . __( 'Email Address:' ) . '</label>';
    $errmsg_email = $errors->get_error_message( 'user_email' );
    if ( $errmsg_email ) {
        echo '<p class="error">' . $errmsg_email . '</p>';
    }
    echo '<input name="user_email" type="email" value="' . esc_attr( $user_email ) . '" />';
    // 触发钩子
    do_action( 'signup_extra_fields', $errors );
}

注意事项

  • 此函数主要用于 WordPress 多站点环境中的用户注册流程,自 MU 3.0.0 版本引入。
  • 错误处理依赖于 WP_Error 对象,确保传递正确的错误信息以显示用户友好的提示。
  • 通过 signup_extra_fields 钩子,可以扩展表单内容,例如添加自定义字段或验证逻辑。

📄 原文内容

Displays the fields for the new user account registration form.

Parameters

$user_namestringrequired
The entered username.
$user_emailstringrequired
The entered email address.
$errorsWP_Error|stringrequired
A WP_Error object containing existing errors. Defaults to empty string.

Source

function show_user_form( $user_name = '', $user_email = '', $errors = '' ) {
	if ( ! is_wp_error( $errors ) ) {
		$errors = new WP_Error();
	}

	// Username.
	echo '<label for="user_name">' . __( 'Username:' ) . '</label>';
	$errmsg_username      = $errors->get_error_message( 'user_name' );
	$errmsg_username_aria = '';
	if ( $errmsg_username ) {
		$errmsg_username_aria = 'wp-signup-username-error ';
		echo '<p class="error" id="wp-signup-username-error">' . $errmsg_username . '</p>';
	}
	?>
	<input name="user_name" type="text" id="user_name" value="<?php echo esc_attr( $user_name ); ?>" autocapitalize="none" autocorrect="off" maxlength="60" autocomplete="username" required="required" aria-describedby="<?php echo $errmsg_username_aria; ?>wp-signup-username-description" />
	<p id="wp-signup-username-description"></p>

	' . __( 'Email Address:' ) . '</label>';
	$errmsg_email      = $errors->get_error_message( 'user_email' );
	$errmsg_email_aria = '';
	if ( $errmsg_email ) {
		$errmsg_email_aria = 'wp-signup-email-error ';
		echo '<p class="error" id="wp-signup-email-error">' . $errmsg_email . '</p>';
	}
	?>
	<input name="user_email" type="email" id="user_email" value="<?php echo esc_attr( $user_email ); ?>" maxlength="200" autocomplete="email" required="required" aria-describedby="<?php echo $errmsg_email_aria; ?>wp-signup-email-description" />
	<p id="wp-signup-email-description"></p>

	get_error_message( 'generic' );
	if ( $errmsg_generic ) {
		echo '<p class="error" id="wp-signup-generic-error">' . $errmsg_generic . '</p>';
	}
	/**
	 * Fires at the end of the new user account registration form.
	 *
	 * @since 3.0.0
	 *
	 * @param WP_Error $errors A WP_Error object containing 'user_name' or 'user_email' errors.
	 */
	do_action( 'signup_extra_fields', $errors );
}

Hooks

do_action( ‘signup_extra_fields’, WP_Error $errors )

Fires at the end of the new user account registration form.

Changelog

Version Description
MU (3.0.0) Introduced.