wpmu_validate_blog_signup()

wpmu_validate_blog_signup( string $blogname, string $bl…

wpmu_validate_blog_signup( string $blogname, string $blog_title, WP_User|string $user =  )

处理新站点注册。
Processes new site registrations.

目录锚点:#说明#参数#源码


说明(Description)

检查用户在博客注册期间提供的数据。验证博客路径和域的有效性和唯一性。此函数用于防止当前用户使用与另一个用户的登录名等效的blogname注册新站点。将$user参数传递给函数,其中$user是另一个用户,实际上是对该限制的覆盖。如果你想修改WordPress验证新网站注册的方式,请过滤“wpmu_validate_blog_signup”。


参数(Parameters)

参数 类型 说明
$blogname (string) 用户提供的博客名称。必须是唯一的。
$blog_title (string) 用户提供的博客标题。
$user (WP_User | string) 要对照新网站名称检查的用户对象。

源码(Source)

/**
 * Processes new site registrations.
 *
 * Checks the data provided by the user during blog signup. Verifies
 * the validity and uniqueness of blog paths and domains.
 *
 * This function prevents the current user from registering a new site
 * with a blogname equivalent to another user's login name. Passing the
 * $user parameter to the function, where $user is the other user, is
 * effectively an override of this limitation.
 *
 * Filter 'wpmu_validate_blog_signup' if you want to modify
 * the way that WordPress validates new site signups.
 *
 * @since MU
 *
 * @global wpdb   $wpdb
 * @global string $domain
 *
 * @param string $blogname   The blog name provided by the user. Must be unique.
 * @param string $blog_title The blog title provided by the user.
 * @return array Contains the new site data and error messages.
 */
function wpmu_validate_blog_signup( $blogname, $blog_title, $user = '' ) {
	global $wpdb, $domain;

	$current_site = get_current_site();
	$base = $current_site->path;

	$blog_title = strip_tags( $blog_title );
	$blog_title = substr( $blog_title, 0, 50 );

	$errors = new WP_Error();
	$illegal_names = get_site_option( 'illegal_names' );
	if ( $illegal_names == false ) {
		$illegal_names = array( 'www', 'web', 'root', 'admin', 'main', 'invite', 'administrator' );
		add_site_option( 'illegal_names', $illegal_names );
	}

	/*
	 * On sub dir installs, some names are so illegal, only a filter can
	 * spring them from jail.
	 */
	if ( ! is_subdomain_install() ) {
		$illegal_names = array_merge(
			$illegal_names,
			/**
			 * Filter reserved site names on a sub-directory Multisite install.
			 *
			 * @since 3.0.0
			 *
			 * @param array $subdirectory_reserved_names Array of reserved names.
			 */
			apply_filters( 'subdirectory_reserved_names', array( 'page', 'comments', 'blog', 'files', 'feed' ) )
		);
	}

	if ( empty( $blogname ) )
		$errors->add('blogname', __( 'Please enter a site name.' ) );

	if ( preg_match( '/[^a-z0-9]+/', $blogname ) )
		$errors->add('blogname', __( 'Only lowercase letters (a-z) and numbers are allowed.' ) );

	if ( in_array( $blogname, $illegal_names ) )
		$errors->add('blogname',  __( 'That name is not allowed.' ) );

	if ( strlen( $blogname ) < 4="" &&="" !is_super_admin()="" )="" $errors-="">add('blogname',  __( 'Site name must be at least 4 characters.' ) );

	if ( strpos( $blogname, '_' ) !== false )
		$errors->add( 'blogname', __( 'Sorry, site names may not contain the character “_”!' ) );

	// do not allow users to create a blog that conflicts with a page on the main blog.
	if ( !is_subdomain_install() && $wpdb->get_var( $wpdb->prepare( "SELECT post_name FROM " . $wpdb->get_blog_prefix( $current_site->blog_id ) . "posts WHERE post_type = 'page' AND post_name = %s", $blogname ) ) )
		$errors->add( 'blogname', __( 'Sorry, you may not use that site name.' ) );

	// all numeric?
	if ( preg_match( '/^[0-9]*$/', $blogname ) )
		$errors->add('blogname', __('Sorry, site names must have letters too!'));

	/**
	 * Filter the new site name during registration.
	 *
	 * The name is the site's subdomain or the site's subdirectory
	 * path depending on the network settings.
	 *
	 * @since MU
	 *
	 * @param string $blogname Site name.
	 */
	$blogname = apply_filters( 'newblogname', $blogname );

	$blog_title = wp_unslash(  $blog_title );

	if ( empty( $blog_title ) )
		$errors->add('blog_title', __( 'Please enter a site title.' ) );

	// Check if the domain/path has been used already.
	if ( is_subdomain_install() ) {
		$mydomain = $blogname . '.' . preg_replace( '|^www.|', '', $domain );
		$path = $base;
	} else {
		$mydomain = "$domain";
		$path = $base.$blogname.'/';
	}
	if ( domain_exists($mydomain, $path, $current_site->id) )
		$errors->add( 'blogname', __( 'Sorry, that site already exists!' ) );

	if ( username_exists( $blogname ) ) {
		if ( ! is_object( $user ) || ( is_object($user) && ( $user->user_login != $blogname ) ) )
			$errors->add( 'blogname', __( 'Sorry, that site is reserved!' ) );
	}

	// Has someone already signed up for this domain?
	$signup = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->signups WHERE domain = %s AND path = %s", $mydomain, $path) ); // TODO: Check email too?
	if ( ! empty($signup) ) {
		$diff = current_time( 'timestamp', true ) - mysql2date('U', $signup->registered);
		// If registered more than two days ago, cancel registration and let this signup go through.
		if ( $diff > 2 * DAY_IN_SECONDS )
			$wpdb->delete( $wpdb->signups, array( 'domain' => $mydomain , 'path' => $path ) );
		else
			$errors->add('blogname', __('That site is currently reserved but may be available in a couple days.'));
	}

	$result = array('domain' => $mydomain, 'path' => $path, 'blogname' => $blogname, 'blog_title' => $blog_title, 'user' => $user, 'errors' => $errors);

	/**
	 * Filter site details and error messages following registration.
	 *
	 * @since MU
	 *
	 * @param array $result {
	 *     Array of domain, path, blog name, blog title, user and error messages.
	 *
	 *     @type string   $domain     Domain for the site.
	 *     @type string   $path       Path for the site. Used in subdirectory installs.
	 *     @type string   $blogname   The unique site name (slug).
	 *     @type string   $blog_title Blog title.
	 *     @type string   $user       User email address.
	 *     @type WP_Error $errors     WP_Error containing any errors found.
	 * }
	 */
	return apply_filters( 'wpmu_validate_blog_signup', $result );
}
更新版本 源码位置 使用 被使用
MU (3.0.0) wp-includes/ms-functions.php 16 3
类别:WordPress 函数手册

本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。

评论 (0)COMMENT

登录 账号发表你的看法,还没有账号?立即免费 注册