wpmu_signup_user()
云策文档标注
概述
wpmu_signup_user() 函数用于在用户注册开放但新站点注册关闭时,记录用户注册信息以供后续激活。它处理用户名和邮箱的清理,生成激活密钥,并将数据插入数据库。
关键要点
- 函数用途:记录用户注册信息,适用于多站点网络(Multisite)中仅允许用户注册而不允许新站点注册的场景。
- 参数说明:$user(必需,用户名)、$user_email(必需,邮箱地址)、$meta(可选,元数据数组,默认为空数组)。
- 数据处理:使用 sanitize_user() 和 sanitize_email() 清理输入,生成基于时间和随机数的16位激活密钥。
- Hook 支持:提供 signup_user_meta 过滤器用于修改元数据,以及 after_signup_user 动作在数据写入后触发。
- 数据库操作:通过 $wpdb->insert() 将数据插入 signups 表,包括用户名、邮箱、注册时间、激活密钥和序列化元数据。
代码示例
function wpmu_signup_user( $user, $user_email, $meta = array() ) {
global $wpdb;
// Format data.
$user = preg_replace( '/s+/', '', sanitize_user( $user, true ) );
$user_email = sanitize_email( $user_email );
$key = substr( md5( time() . wp_rand() . $user_email ), 0, 16 );
$meta = apply_filters( 'signup_user_meta', $meta, $user, $user_email, $key );
$wpdb->insert(
$wpdb->signups,
array(
'domain' => '',
'path' => '',
'title' => '',
'user_login' => $user,
'user_email' => $user_email,
'registered' => current_time( 'mysql', true ),
'activation_key' => $key,
'meta' => serialize( $meta ),
)
);
do_action( 'after_signup_user', $user, $user_email, $key, $meta );
}注意事项
- 此函数专为多站点网络设计,在标准单站点 WordPress 中可能不适用。
- 输入参数需确保有效性,函数内部会进行清理,但开发者应预先验证以避免错误。
- 元数据通过 serialize() 序列化存储,反序列化时需注意兼容性。
- 相关函数包括 validate_user_signup(),用于在调用前验证用户注册数据。
原文内容
Records user signup information for future activation.
Description
This function is used when user registration is open but new site registration is not.
Parameters
$userstringrequired-
The user’s requested login name.
$user_emailstringrequired-
The user’s email address.
$metaarrayoptional-
Signup meta data.
Default:
array()
Source
function wpmu_signup_user( $user, $user_email, $meta = array() ) {
global $wpdb;
// Format data.
$user = preg_replace( '/s+/', '', sanitize_user( $user, true ) );
$user_email = sanitize_email( $user_email );
$key = substr( md5( time() . wp_rand() . $user_email ), 0, 16 );
/**
* Filters the metadata for a user signup.
*
* The metadata will be serialized prior to storing it in the database.
*
* @since 4.8.0
*
* @param array $meta Signup meta data. Default empty array.
* @param string $user The user's requested login name.
* @param string $user_email The user's email address.
* @param string $key The user's activation key.
*/
$meta = apply_filters( 'signup_user_meta', $meta, $user, $user_email, $key );
$wpdb->insert(
$wpdb->signups,
array(
'domain' => '',
'path' => '',
'title' => '',
'user_login' => $user,
'user_email' => $user_email,
'registered' => current_time( 'mysql', true ),
'activation_key' => $key,
'meta' => serialize( $meta ),
)
);
/**
* Fires after a user's signup information has been written to the database.
*
* @since 4.4.0
*
* @param string $user The user's requested login name.
* @param string $user_email The user's email address.
* @param string $key The user's activation key.
* @param array $meta Signup meta data. Default empty array.
*/
do_action( 'after_signup_user', $user, $user_email, $key, $meta );
}
Hooks
- do_action( ‘after_signup_user’, string $user, string $user_email, string $key, array $meta )
-
Fires after a user’s signup information has been written to the database.
- apply_filters( ‘signup_user_meta’, array $meta, string $user, string $user_email, string $key )
-
Filters the metadata for a user signup.
Changelog
| Version | Description |
|---|---|
| MU (3.0.0) | Introduced. |