函数文档

validate_another_blog_signup()

💡 云策文档标注

概述

validate_another_blog_signup() 函数用于验证现有用户创建新站点的注册请求,确保用户已登录并处理表单数据。函数返回布尔值表示验证结果,并在验证失败时显示错误表单。

关键要点

  • 函数验证新站点注册,仅适用于已登录用户,未登录时终止执行。
  • 调用 validate_blog_form() 获取表单数据,并设置全局变量如 $domain、$path、$blogname、$blog_title 和 $errors。
  • 如果存在错误,调用 signup_another_blog() 显示错误表单并返回 false。
  • 处理语言设置,通过 $_POST['WPLANG'] 和 signup_get_available_languages() 验证并添加至站点元数据。
  • 使用 apply_filters_deprecated() 和 apply_filters() 钩子过滤站点元数据,支持 'signup_create_blog_meta'(已弃用)和 'add_signup_meta'。
  • 调用 wpmu_create_blog() 创建站点,若成功则调用 confirm_another_blog_signup() 显示确认消息并返回 true,否则返回 false。

代码示例

// 示例调用 validate_another_blog_signup() 函数
$result = validate_another_blog_signup();
if ($result === true) {
    echo "站点注册验证成功,新站点已创建。";
} elseif ($result === false) {
    echo "站点注册验证失败,请检查错误信息。";
} else {
    echo "用户未登录,执行终止。";
}

注意事项

  • 函数依赖于全局变量和 $_POST 数据,确保在适当上下文中调用,如站点注册表单处理。
  • 使用已弃用的钩子 'signup_create_blog_meta',建议迁移至 'add_signup_meta' 以保持兼容性。
  • 错误处理通过 $errors 对象管理,需检查 has_errors() 方法以确定验证状态。

📄 原文内容

Validates a new site sign-up for an existing user.

Return

null|bool True if site signup was validated, false on error.
The function halts all execution if the user is not logged in.

Source

function validate_another_blog_signup() {
	global $blogname, $blog_title, $errors, $domain, $path;
	$current_user = wp_get_current_user();
	if ( ! is_user_logged_in() ) {
		die();
	}

	$result = validate_blog_form();

	// Extracted values set/overwrite globals.
	$domain     = $result['domain'];
	$path       = $result['path'];
	$blogname   = $result['blogname'];
	$blog_title = $result['blog_title'];
	$errors     = $result['errors'];

	if ( $errors->has_errors() ) {
		signup_another_blog( $blogname, $blog_title, $errors );
		return false;
	}

	$public = (int) $_POST['blog_public'];

	$blog_meta_defaults = array(
		'lang_id' => 1,
		'public'  => $public,
	);

	// Handle the language setting for the new site.
	if ( ! empty( $_POST['WPLANG'] ) ) {

		$languages = signup_get_available_languages();

		if ( in_array( $_POST['WPLANG'], $languages, true ) ) {
			$language = wp_unslash( sanitize_text_field( $_POST['WPLANG'] ) );

			if ( $language ) {
				$blog_meta_defaults['WPLANG'] = $language;
			}
		}
	}

	/**
	 * Filters the new site meta variables.
	 *
	 * Use the 'add_signup_meta' filter instead.
	 *
	 * @since MU (3.0.0)
	 * @deprecated 3.0.0 Use the 'add_signup_meta' filter instead.
	 *
	 * @param array $blog_meta_defaults An array of default blog meta variables.
	 */
	$meta_defaults = apply_filters_deprecated( 'signup_create_blog_meta', array( $blog_meta_defaults ), '3.0.0', 'add_signup_meta' );

	/**
	 * Filters the new default site meta variables.
	 *
	 * @since 3.0.0
	 *
	 * @param array $meta {
	 *     An array of default site meta variables.
	 *
	 *     @type int $lang_id     The language ID.
	 *     @type int $blog_public Whether search engines should be discouraged from indexing the site. 1 for true, 0 for false.
	 * }
	 */
	$meta = apply_filters( 'add_signup_meta', $meta_defaults );

	$blog_id = wpmu_create_blog( $domain, $path, $blog_title, $current_user->ID, $meta, get_current_network_id() );

	if ( is_wp_error( $blog_id ) ) {
		return false;
	}

	confirm_another_blog_signup( $domain, $path, $blog_title, $current_user->user_login, $current_user->user_email, $meta, $blog_id );
	return true;
}

Hooks

apply_filters( ‘add_signup_meta’, array $meta )

Filters the new default site meta variables.

apply_filters_deprecated( ‘signup_create_blog_meta’, array $blog_meta_defaults )

Filters the new site meta variables.

Changelog

Version Description
MU (3.0.0) Introduced.