函数文档

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.