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