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
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. |