wpmu_validate_blog_signup()博客注册批准(多站点)

目录

描述

Processes new site registrations.

Checks the data provided by the user during blog signup. Verifies the validity and uniqueness of blog paths and domains.

wpmu_validate_blog_signup() 描述

用法

<?php wpmu_validate_blog_signup($blogname$blog_title$user); ?>

wpmu_validate_blog_signup() 用法

参数

$blogname

(string) (必填) The blog name provided by the user. Must be unique.

默认值: None

$blog_title

(string) (必填) The blog title provided by the user.

默认值: None

$cap

(string) (可选) Provide the other user's login name to override the restriction to block blog names equivalent to another user's login name.

默认值: empty string

wpmu_validate_blog_signup() 参数

示例

/* ----------------------------------
 * wordpress之魂 © http://wphun.com
 * ---------------------------------- */

wpmu_validate_blog_signup() 示例

注意

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

wpmu_validate_blog_signup() 注意

历史

添加于 版本: MU

wpmu_validate_blog_signup() 历史

源文件

wpmu_validate_blog_signup() 函数的代码位于 wp-includes/ms-functions.php

/* ----------------------------------
 * wordpress之魂 © http://wphun.com
 * ---------------------------------- */
/**
 * 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 );
}

wpmu_validate_blog_signup() 源文件

相关