2013-10-25 00:58:23 +02:00
< ? php
2024-11-10 22:36:19 +01:00
/**
* WordPress Signup Page
*
* Handles the user registration and site creation process for multisite installations .
*
* @ package WordPress
*/
2013-10-25 00:58:23 +02:00
/** Sets up the WordPress Environment. */
2020-02-06 07:33:11 +01:00
require __DIR__ . '/wp-load.php' ;
2013-10-25 00:58:23 +02:00
Robots: Introduce Robots API.
This changeset introduces a filter-based Robots API, providing central control over the `robots` meta tag.
* Introduces `wp_robots()` function which should be called anywhere a `robots` meta tag should be included.
* Introduces `wp_robots` filter which allows adding or modifying directives for the `robots` meta tag. The `wp_robots()` function is entirely filter-based, i.e. if no filter is added to `wp_robots`, no directives will be present, and therefore the entire `robots` meta tag will be omitted.
* Introduces the following `wp_robots` filter functions which replace similar existing functions that were manually rendering a `robots` meta tag:
* `wp_robots_noindex()` replaces `noindex()`, which has been deprecated.
* `wp_robots_no_robots()` replaces `wp_no_robots()`, which has been deprecated.
* `wp_robots_sensitive_page()` replaces `wp_sensitive_page_meta()`, which has been deprecated. Its rendering of the `referrer` meta tag has been moved to another new function `wp_strict_cross_origin_referrer()`.
Migration to the new functions is straightforward. For example, a call to `add_action( 'wp_head', 'wp_no_robots' )` should be replaced with `add_filter( 'wp_robots', 'wp_robots_no_robots' )`.
Plugins and themes that render their own `robots` meta tags are encouraged to switch to rely on the `wp_robots` filter in order to use the central management layer now provided by WordPress core.
Props adamsilverstein, flixos90, timothyblynjacobs, westonruter.
See #51511.
Built from https://develop.svn.wordpress.org/trunk@49992
git-svn-id: http://core.svn.wordpress.org/trunk@49693 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-01-21 02:37:00 +01:00
add_filter ( 'wp_robots' , 'wp_robots_no_robots' );
2013-10-25 00:58:23 +02:00
2020-02-06 07:33:11 +01:00
require __DIR__ . '/wp-blog-header.php' ;
2013-10-25 00:58:23 +02:00
2018-04-30 01:05:21 +02:00
nocache_headers ();
2020-04-05 05:02:11 +02:00
if ( is_array ( get_site_option ( 'illegal_names' ) ) && isset ( $_GET [ 'new' ] ) && in_array ( $_GET [ 'new' ], get_site_option ( 'illegal_names' ), true ) ) {
2013-10-25 00:58:23 +02:00
wp_redirect ( network_home_url () );
die ();
}
/**
Docs: Improve documentation in `wp-signup.php`.
* Document the `$active_signup` global in `signup_user()`.
* Update some DocBlocks per the documentation standards.
* Expand some function descriptions for clarity.
Follow-up to [37535], [37536], [41200], [43326], [49078], [50828].
Props mt8.biz, sabernhardt, audrasjb, westonruter, jayupadhyay01, mukesh27, SergeyBiryukov.
Fixes #41566.
Built from https://develop.svn.wordpress.org/trunk@51699
git-svn-id: http://core.svn.wordpress.org/trunk@51305 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-08-31 14:25:00 +02:00
* Prints signup_header via wp_head .
2013-10-25 00:58:23 +02:00
*
2017-08-01 22:44:43 +02:00
* @ since MU ( 3.0 . 0 )
2013-10-25 00:58:23 +02:00
*/
function do_signup_header () {
/**
2014-11-24 07:31:21 +01:00
* Fires within the head section of the site sign - up screen .
2013-10-25 00:58:23 +02:00
*
* @ since 3.0 . 0
*/
do_action ( 'signup_header' );
}
add_action ( 'wp_head' , 'do_signup_header' );
2017-12-01 00:11:00 +01:00
if ( ! is_multisite () ) {
2015-09-15 19:11:35 +02:00
wp_redirect ( wp_registration_url () );
2013-10-25 00:58:23 +02:00
die ();
}
2017-12-01 00:11:00 +01:00
if ( ! is_main_site () ) {
2013-10-25 00:58:23 +02:00
wp_redirect ( network_site_url ( 'wp-signup.php' ) );
die ();
}
2020-01-29 01:45:18 +01:00
// Fix for page title.
2013-10-25 00:58:23 +02:00
$wp_query -> is_404 = false ;
2015-10-14 19:32:49 +02:00
/**
2021-10-25 02:23:57 +02:00
* Fires before the Site Sign - up page is loaded .
2015-10-14 19:32:49 +02:00
*
* @ since 4.4 . 0
*/
do_action ( 'before_signup_header' );
2013-10-25 00:58:23 +02:00
/**
2021-10-25 02:23:57 +02:00
* Prints styles for front - end Multisite Sign - up pages .
2013-10-25 00:58:23 +02:00
*
2017-08-01 22:44:43 +02:00
* @ since MU ( 3.0 . 0 )
2013-10-25 00:58:23 +02:00
*/
function wpmu_signup_stylesheet () {
?>
< style type = " text/css " >
2022-09-17 01:13:10 +02:00
. mu_register { width : 90 % ; margin : 0 auto ; }
2013-10-25 00:58:23 +02:00
. mu_register form { margin - top : 2 em ; }
2022-09-17 01:13:10 +02:00
. mu_register fieldset ,
. mu_register legend { margin : 0 ; padding : 0 ; border : none ; }
. mu_register . error { font - weight : 600 ; padding : 10 px ; color : #333; background: #ffebe8; border: 1px solid #c00; }
2013-10-25 00:58:23 +02:00
. mu_register input [ type = " submit " ],
. mu_register #blog_title,
. mu_register #user_email,
. mu_register #blogname,
2022-09-17 01:13:10 +02:00
. mu_register #user_name { width: 100%; font-size: 24px; margin: 5px 0; box-sizing: border-box; }
2015-10-14 01:46:25 +02:00
. mu_register #site-language { display: block; }
2013-10-25 00:58:23 +02:00
. mu_register . prefix_address ,
2022-09-17 01:13:10 +02:00
. mu_register . suffix_address { font - size : 18 px ; display : inline - block ; direction : ltr ; }
. mu_register label ,
. mu_register legend ,
. mu_register . label - heading { font - weight : 600 ; font - size : 15 px ; display : block ; margin : 10 px 0 ; }
. mu_register legend + p ,
. mu_register input + p { margin - top : 0 ; }
. mu_register label . checkbox { display : inline ; }
. mu_register . mu_alert { font - weight : 600 ; padding : 10 px ; color : #333; background: #ffffe0; border: 1px solid #e6db55; }
. mu_register . mu_alert a { color : inherit ; text - decoration : underline ; }
. mu_register . signup - options . wp - signup - radio - button { display : block ; }
. mu_register . privacy - intro . wp - signup - radio - button { margin - right : 0.5 em ; }
. rtl . mu_register . wp - signup - blogname { direction : ltr ; text - align : right ; }
2013-10-25 00:58:23 +02:00
</ style >
< ? php
}
add_action ( 'wp_head' , 'wpmu_signup_stylesheet' );
2022-09-17 01:13:10 +02:00
2015-10-06 00:36:24 +02:00
get_header ( 'wp-signup' );
2013-10-25 00:58:23 +02:00
/**
2021-10-25 02:23:57 +02:00
* Fires before the site Sign - up form .
2013-10-25 00:58:23 +02:00
*
* @ since 3.0 . 0
*/
do_action ( 'before_signup_form' );
?>
2015-09-15 04:09:24 +02:00
< div id = " signup-content " class = " widecolumn " >
2020-01-16 04:44:05 +01:00
< div class = " mu_register wp-signup-container " role = " main " >
2013-10-25 00:58:23 +02:00
< ? php
/**
2021-10-25 02:23:57 +02:00
* Generates and displays the Sign - up and Create Site forms .
2013-10-25 00:58:23 +02:00
*
2017-08-01 22:44:43 +02:00
* @ since MU ( 3.0 . 0 )
2013-10-25 00:58:23 +02:00
*
2016-05-24 06:16:27 +02:00
* @ param string $blogname The new site name .
* @ param string $blog_title The new site title .
2020-01-11 19:32:05 +01:00
* @ param WP_Error | string $errors A WP_Error object containing existing errors . Defaults to empty string .
2013-10-25 00:58:23 +02:00
*/
2013-11-13 04:23:10 +01:00
function show_blog_form ( $blogname = '' , $blog_title = '' , $errors = '' ) {
2016-05-24 06:16:27 +02:00
if ( ! is_wp_error ( $errors ) ) {
$errors = new WP_Error ();
}
2016-10-19 06:47:30 +02:00
$current_network = get_network ();
2023-06-19 20:27:27 +02:00
// Site name.
2017-12-01 00:11:00 +01:00
if ( ! is_subdomain_install () ) {
2022-09-17 02:35:10 +02:00
echo '<label for="blogname">' . __ ( 'Site Name (subdirectory only):' ) . '</label>' ;
2017-12-01 00:11:00 +01:00
} else {
2022-09-17 02:35:10 +02:00
echo '<label for="blogname">' . __ ( 'Site Domain (subdomain only):' ) . '</label>' ;
2017-12-01 00:11:00 +01:00
}
2013-10-25 00:58:23 +02:00
2022-09-17 01:13:10 +02:00
$errmsg_blogname = $errors -> get_error_message ( 'blogname' );
$errmsg_blogname_aria = '' ;
if ( $errmsg_blogname ) {
$errmsg_blogname_aria = 'wp-signup-blogname-error ' ;
echo '<p class="error" id="wp-signup-blogname-error">' . $errmsg_blogname . '</p>' ;
2017-12-01 00:11:00 +01:00
}
2013-10-25 00:58:23 +02:00
2017-12-01 00:11:00 +01:00
if ( ! is_subdomain_install () ) {
2022-09-17 02:35:10 +02:00
echo '<div class="wp-signup-blogname"><span class="prefix_address" id="prefix-address">' . $current_network -> domain . $current_network -> path . '</span><input name="blogname" type="text" id="blogname" value="' . esc_attr ( $blogname ) . '" maxlength="60" autocomplete="off" required="required" aria-describedby="' . $errmsg_blogname_aria . 'prefix-address" /></div>' ;
2017-12-01 00:11:00 +01:00
} else {
2019-01-16 17:51:52 +01:00
$site_domain = preg_replace ( '|^www\.|' , '' , $current_network -> domain );
2022-09-17 02:35:10 +02:00
echo '<div class="wp-signup-blogname"><input name="blogname" type="text" id="blogname" value="' . esc_attr ( $blogname ) . '" maxlength="60" autocomplete="off" required="required" aria-describedby="' . $errmsg_blogname_aria . 'suffix-address" /><span class="suffix_address" id="suffix-address">.' . esc_html ( $site_domain ) . '</span></div>' ;
2017-12-01 00:11:00 +01:00
}
2013-10-25 00:58:23 +02:00
2016-05-24 22:44:29 +02:00
if ( ! is_user_logged_in () ) {
if ( ! is_subdomain_install () ) {
2016-10-19 06:47:30 +02:00
$site = $current_network -> domain . $current_network -> path . __ ( 'sitename' );
2016-05-24 22:44:29 +02:00
} else {
2016-10-19 06:47:30 +02:00
$site = __ ( 'domain' ) . '.' . $site_domain . $current_network -> path ;
2016-05-24 22:44:29 +02:00
}
2019-09-02 02:43:55 +02:00
printf (
'<p>(<strong>%s</strong>) %s</p>' ,
2019-09-03 02:41:05 +02:00
/* translators: %s: Site address. */
2019-09-02 02:43:55 +02:00
sprintf ( __ ( 'Your address will be %s.' ), $site ),
__ ( 'Must be at least 4 characters, letters and numbers only. It cannot be changed, so choose carefully!' )
);
2013-10-25 00:58:23 +02:00
}
2020-01-29 01:45:18 +01:00
// Site Title.
2013-10-25 00:58:23 +02:00
?>
2017-12-01 00:11:00 +01:00
< label for = " blog_title " >< ? php _e ( 'Site Title:' ); ?> </label>
2019-01-16 17:51:52 +01:00
< ? php
2022-09-17 01:13:10 +02:00
$errmsg_blog_title = $errors -> get_error_message ( 'blog_title' );
$errmsg_blog_title_aria = '' ;
if ( $errmsg_blog_title ) {
$errmsg_blog_title_aria = ' aria-describedby="wp-signup-blog-title-error"' ;
echo '<p class="error" id="wp-signup-blog-title-error">' . $errmsg_blog_title . '</p>' ;
2019-01-12 07:41:52 +01:00
}
2022-09-17 02:35:10 +02:00
echo '<input name="blog_title" type="text" id="blog_title" value="' . esc_attr ( $blog_title ) . '" required="required" autocomplete="off"' . $errmsg_blog_title_aria . ' />' ;
2019-01-12 07:41:52 +01:00
?>
2013-10-25 00:58:23 +02:00
2015-10-14 01:46:25 +02:00
< ? php
// Site Language.
$languages = signup_get_available_languages ();
if ( ! empty ( $languages ) ) :
?>
< p >
< label for = " site-language " >< ? php _e ( 'Site Language:' ); ?> </label>
< ? php
// Network default.
$lang = get_site_option ( 'WPLANG' );
if ( isset ( $_POST [ 'WPLANG' ] ) ) {
$lang = $_POST [ 'WPLANG' ];
}
// Use US English if the default isn't available.
2020-04-05 05:02:11 +02:00
if ( ! in_array ( $lang , $languages , true ) ) {
2015-10-14 01:46:25 +02:00
$lang = '' ;
}
2017-12-01 00:11:00 +01:00
wp_dropdown_languages (
array (
'name' => 'WPLANG' ,
'id' => 'site-language' ,
'selected' => $lang ,
'languages' => $languages ,
'show_available_translations' => false ,
)
);
2015-10-14 01:46:25 +02:00
?>
</ p >
2018-08-17 03:51:36 +02:00
< ? php
2017-11-23 05:09:49 +01:00
endif ; // Languages.
2019-01-16 17:51:52 +01:00
$blog_public_on_checked = '' ;
$blog_public_off_checked = '' ;
2020-01-09 01:55:05 +01:00
if ( isset ( $_POST [ 'blog_public' ] ) && '0' === $_POST [ 'blog_public' ] ) {
2017-12-01 00:11:00 +01:00
$blog_public_off_checked = 'checked="checked"' ;
} else {
$blog_public_on_checked = 'checked="checked"' ;
}
2017-11-23 05:09:49 +01:00
?>
2015-10-14 01:46:25 +02:00
2013-10-25 00:58:23 +02:00
< div id = " privacy " >
2022-09-17 01:13:10 +02:00
< fieldset class = " privacy-intro " >
< legend >
< span class = " label-heading " >< ? php _e ( 'Privacy:' ); ?> </span>
< ? php _e ( 'Allow search engines to index this site.' ); ?>
</ legend >
< p class = " wp-signup-radio-buttons " >
< span class = " wp-signup-radio-button " >
< input type = " radio " id = " blog_public_on " name = " blog_public " value = " 1 " < ? php echo $blog_public_on_checked ; ?> />
< label class = " checkbox " for = " blog_public_on " >< ? php _e ( 'Yes' ); ?> </label>
</ span >
< span class = " wp-signup-radio-button " >
< input type = " radio " id = " blog_public_off " name = " blog_public " value = " 0 " < ? php echo $blog_public_off_checked ; ?> />
< label class = " checkbox " for = " blog_public_off " >< ? php _e ( 'No' ); ?> </label>
</ span >
</ p >
</ fieldset >
2013-10-25 00:58:23 +02:00
</ div >
< ? php
/**
* Fires after the site sign - up form .
*
* @ since 3.0 . 0
*
2016-05-24 06:16:27 +02:00
* @ param WP_Error $errors A WP_Error object possibly containing 'blogname' or 'blog_title' errors .
2013-10-25 00:58:23 +02:00
*/
do_action ( 'signup_blogform' , $errors );
}
/**
2021-10-25 02:23:57 +02:00
* Validates the new site sign - up .
2013-10-25 00:58:23 +02:00
*
2017-08-01 22:44:43 +02:00
* @ since MU ( 3.0 . 0 )
2013-10-25 00:58:23 +02:00
*
* @ return array Contains the new site data and error messages .
2021-05-07 22:16:00 +02:00
* See wpmu_validate_blog_signup () for details .
2013-10-25 00:58:23 +02:00
*/
function validate_blog_form () {
$user = '' ;
2017-12-01 00:11:00 +01:00
if ( is_user_logged_in () ) {
2013-10-25 00:58:23 +02:00
$user = wp_get_current_user ();
2017-12-01 00:11:00 +01:00
}
2013-10-25 00:58:23 +02:00
2017-12-01 00:11:00 +01:00
return wpmu_validate_blog_signup ( $_POST [ 'blogname' ], $_POST [ 'blog_title' ], $user );
2013-10-25 00:58:23 +02:00
}
/**
2020-09-30 23:54:07 +02:00
* Displays the fields for the new user account registration form .
2013-10-25 00:58:23 +02:00
*
2017-08-01 22:44:43 +02:00
* @ since MU ( 3.0 . 0 )
2013-10-25 00:58:23 +02:00
*
2016-05-24 06:16:27 +02:00
* @ param string $user_name The entered username .
* @ param string $user_email The entered email address .
2020-01-11 19:32:05 +01:00
* @ param WP_Error | string $errors A WP_Error object containing existing errors . Defaults to empty string .
2013-10-25 00:58:23 +02:00
*/
2017-12-01 00:11:00 +01:00
function show_user_form ( $user_name = '' , $user_email = '' , $errors = '' ) {
2016-05-24 06:16:27 +02:00
if ( ! is_wp_error ( $errors ) ) {
$errors = new WP_Error ();
}
2020-01-29 01:45:18 +01:00
// Username.
2017-12-01 00:11:00 +01:00
echo '<label for="user_name">' . __ ( 'Username:' ) . '</label>' ;
2022-09-17 01:13:10 +02:00
$errmsg_username = $errors -> get_error_message ( 'user_name' );
$errmsg_username_aria = '' ;
if ( $errmsg_username ) {
$errmsg_username_aria = 'wp-signup-username-error ' ;
echo '<p class="error" id="wp-signup-username-error">' . $errmsg_username . '</p>' ;
2013-10-25 00:58:23 +02:00
}
?>
2022-09-17 02:35:10 +02:00
< input name = " user_name " type = " text " id = " user_name " value = " <?php echo esc_attr( $user_name ); ?> " autocapitalize = " none " autocorrect = " off " maxlength = " 60 " autocomplete = " username " required = " required " aria - describedby = " <?php echo $errmsg_username_aria ; ?>wp-signup-username-description " />
2022-09-17 01:13:10 +02:00
< p id = " wp-signup-username-description " >< ? php _e ( '(Must be at least 4 characters, lowercase letters and numbers only.)' ); ?> </p>
2013-10-25 00:58:23 +02:00
2019-01-16 17:51:52 +01:00
< ? php
2022-09-17 01:13:10 +02:00
// Email address.
echo '<label for="user_email">' . __ ( 'Email Address:' ) . '</label>' ;
$errmsg_email = $errors -> get_error_message ( 'user_email' );
$errmsg_email_aria = '' ;
if ( $errmsg_email ) {
$errmsg_email_aria = 'wp-signup-email-error ' ;
echo '<p class="error" id="wp-signup-email-error">' . $errmsg_email . '</p>' ;
}
?>
2022-09-17 02:35:10 +02:00
< input name = " user_email " type = " email " id = " user_email " value = " <?php echo esc_attr( $user_email ); ?> " maxlength = " 200 " autocomplete = " email " required = " required " aria - describedby = " <?php echo $errmsg_email_aria ; ?>wp-signup-email-description " />
2022-09-17 01:13:10 +02:00
< p id = " wp-signup-email-description " >< ? php _e ( 'Your registration email is sent to this address. (Double-check your email address before continuing.)' ); ?> </p>
2013-10-25 00:58:23 +02:00
< ? php
2022-09-17 01:13:10 +02:00
// Extra fields.
$errmsg_generic = $errors -> get_error_message ( 'generic' );
if ( $errmsg_generic ) {
echo '<p class="error" id="wp-signup-generic-error">' . $errmsg_generic . '</p>' ;
2013-10-25 00:58:23 +02:00
}
/**
2020-09-30 23:54:07 +02:00
* Fires at the end of the new user account registration form .
2013-10-25 00:58:23 +02:00
*
* @ since 3.0 . 0
*
2017-09-09 15:19:45 +02:00
* @ param WP_Error $errors A WP_Error object containing 'user_name' or 'user_email' errors .
2013-10-25 00:58:23 +02:00
*/
do_action ( 'signup_extra_fields' , $errors );
}
/**
2021-10-25 02:23:57 +02:00
* Validates user sign - up name and email .
2013-10-25 00:58:23 +02:00
*
2017-08-01 22:44:43 +02:00
* @ since MU ( 3.0 . 0 )
2013-10-25 00:58:23 +02:00
*
* @ return array Contains username , email , and error messages .
2021-05-07 22:16:00 +02:00
* See wpmu_validate_user_signup () for details .
2013-10-25 00:58:23 +02:00
*/
function validate_user_form () {
2017-12-01 00:11:00 +01:00
return wpmu_validate_user_signup ( $_POST [ 'user_name' ], $_POST [ 'user_email' ] );
2013-10-25 00:58:23 +02:00
}
/**
Docs: Improve documentation in `wp-signup.php`.
* Document the `$active_signup` global in `signup_user()`.
* Update some DocBlocks per the documentation standards.
* Expand some function descriptions for clarity.
Follow-up to [37535], [37536], [41200], [43326], [49078], [50828].
Props mt8.biz, sabernhardt, audrasjb, westonruter, jayupadhyay01, mukesh27, SergeyBiryukov.
Fixes #41566.
Built from https://develop.svn.wordpress.org/trunk@51699
git-svn-id: http://core.svn.wordpress.org/trunk@51305 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-08-31 14:25:00 +02:00
* Shows a form for returning users to sign up for another site .
2013-10-25 00:58:23 +02:00
*
2017-08-01 22:44:43 +02:00
* @ since MU ( 3.0 . 0 )
2013-10-25 00:58:23 +02:00
*
2016-05-24 06:16:27 +02:00
* @ param string $blogname The new site name
* @ param string $blog_title The new site title .
2020-01-11 19:32:05 +01:00
* @ param WP_Error | string $errors A WP_Error object containing existing errors . Defaults to empty string .
2013-10-25 00:58:23 +02:00
*/
2013-11-13 04:23:10 +01:00
function signup_another_blog ( $blogname = '' , $blog_title = '' , $errors = '' ) {
2013-10-25 00:58:23 +02:00
$current_user = wp_get_current_user ();
2017-12-01 00:11:00 +01:00
if ( ! is_wp_error ( $errors ) ) {
2013-10-25 00:58:23 +02:00
$errors = new WP_Error ();
}
$signup_defaults = array (
'blogname' => $blogname ,
'blog_title' => $blog_title ,
2017-12-01 00:11:00 +01:00
'errors' => $errors ,
2013-10-25 00:58:23 +02:00
);
/**
2016-05-23 18:44:27 +02:00
* Filters the default site sign - up variables .
2013-10-25 00:58:23 +02:00
*
* @ since 3.0 . 0
*
* @ param array $signup_defaults {
* An array of default site sign - up variables .
*
2016-05-24 06:16:27 +02:00
* @ type string $blogname The site blogname .
* @ type string $blog_title The site title .
* @ type WP_Error $errors A WP_Error object possibly containing 'blogname' or 'blog_title' errors .
2013-10-25 00:58:23 +02:00
* }
*/
$filtered_results = apply_filters ( 'signup_another_blog_init' , $signup_defaults );
2017-12-01 00:11:00 +01:00
$blogname = $filtered_results [ 'blogname' ];
2013-10-25 00:58:23 +02:00
$blog_title = $filtered_results [ 'blog_title' ];
2017-12-01 00:11:00 +01:00
$errors = $filtered_results [ 'errors' ];
2013-10-25 00:58:23 +02:00
2019-09-03 02:41:05 +02:00
/* translators: %s: Network title. */
2016-10-19 06:47:30 +02:00
echo '<h2>' . sprintf ( __ ( 'Get <em>another</em> %s site in seconds' ), get_network () -> site_name ) . '</h2>' ;
2013-10-25 00:58:23 +02:00
2018-02-27 03:31:31 +01:00
if ( $errors -> has_errors () ) {
2013-10-25 00:58:23 +02:00
echo '<p>' . __ ( 'There was a problem, please correct the form below and try again.' ) . '</p>' ;
}
?>
2018-08-30 14:14:24 +02:00
< p >
< ? php
2019-01-16 17:51:52 +01:00
printf (
/* translators: %s: Current user's display name. */
__ ( 'Welcome back, %s. By filling out the form below, you can <strong>add another site to your account</strong>. There is no limit to the number of sites you can have, so create to your heart’s content, but write responsibly!' ),
$current_user -> display_name
);
2018-08-30 14:14:24 +02:00
?>
</ p >
2013-10-25 00:58:23 +02:00
< ? php
2017-12-01 00:11:00 +01:00
$blogs = get_blogs_of_user ( $current_user -> ID );
if ( ! empty ( $blogs ) ) {
2018-08-17 03:51:36 +02:00
?>
2013-10-25 00:58:23 +02:00
2017-12-01 00:11:00 +01:00
< p >< ? php _e ( 'Sites you are already a member of:' ); ?> </p>
2013-10-25 00:58:23 +02:00
< ul >
2017-12-01 00:11:00 +01:00
< ? php
foreach ( $blogs as $blog ) {
2013-10-25 00:58:23 +02:00
$home_url = get_home_url ( $blog -> userblog_id );
echo '<li><a href="' . esc_url ( $home_url ) . '">' . $home_url . '</a></li>' ;
2017-12-01 00:11:00 +01:00
}
?>
2013-10-25 00:58:23 +02:00
</ ul >
< ? php } ?>
Administration: Replace contracted verb forms for better consistency.
This changeset replaces contracted verb forms like `doesn't`, `can't`, or `isn't` with non-contracted forms like `does not`, `cannot`, or `is not`, for better consistency across the WordPress administration. It also updates some corresponding unit tests strings.
Props Presskopp, socalchristina, aandrewdixon, francina, SergeyBiryukov, JeffPaul, audrasjb, hellofromTonya.
Fixes #38913.
See #39176.
Built from https://develop.svn.wordpress.org/trunk@52978
git-svn-id: http://core.svn.wordpress.org/trunk@52567 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-03-22 17:25:03 +01:00
< p >< ? php _e ( 'If you are not going to use a great site domain, leave it for a new user. Now have at it!' ); ?> </p>
2013-10-25 00:58:23 +02:00
< form id = " setupform " method = " post " action = " wp-signup.php " >
< input type = " hidden " name = " stage " value = " gimmeanotherblog " />
< ? php
/**
2023-06-14 16:11:16 +02:00
* Fires when hidden sign - up form fields output when creating another site or user .
2013-10-25 00:58:23 +02:00
*
2017-08-01 22:44:43 +02:00
* @ since MU ( 3.0 . 0 )
2013-10-25 00:58:23 +02:00
*
* @ param string $context A string describing the steps of the sign - up process . The value can be
* 'create-another-site' , 'validate-user' , or 'validate-site' .
*/
do_action ( 'signup_hidden_fields' , 'create-another-site' );
?>
2017-12-01 00:11:00 +01:00
< ? php show_blog_form ( $blogname , $blog_title , $errors ); ?>
< p class = " submit " >< input type = " submit " name = " submit " class = " submit " value = " <?php esc_attr_e( 'Create Site' ); ?> " /></ p >
2013-10-25 00:58:23 +02:00
</ form >
< ? php
}
/**
2021-10-25 02:23:57 +02:00
* Validates a new site sign - up for an existing user .
2013-10-25 00:58:23 +02:00
*
2017-08-01 22:44:43 +02:00
* @ since MU ( 3.0 . 0 )
2013-10-25 00:58:23 +02:00
*
Docs: Improve documentation in `wp-signup.php`.
* Document the `$active_signup` global in `signup_user()`.
* Update some DocBlocks per the documentation standards.
* Expand some function descriptions for clarity.
Follow-up to [37535], [37536], [41200], [43326], [49078], [50828].
Props mt8.biz, sabernhardt, audrasjb, westonruter, jayupadhyay01, mukesh27, SergeyBiryukov.
Fixes #41566.
Built from https://develop.svn.wordpress.org/trunk@51699
git-svn-id: http://core.svn.wordpress.org/trunk@51305 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-08-31 14:25:00 +02:00
* @ global string $blogname The new site ' s subdomain or directory name .
* @ global string $blog_title The new site ' s title .
* @ global WP_Error $errors Existing errors in the global scope .
* @ global string $domain The new site ' s domain .
* @ global string $path The new site ' s path .
*
* @ return null | bool True if site signup was validated , false on error .
2015-06-27 03:03:25 +02:00
* The function halts all execution if the user is not logged in .
2013-10-25 00:58:23 +02:00
*/
function validate_another_blog_signup () {
2017-08-12 15:11:43 +02:00
global $blogname , $blog_title , $errors , $domain , $path ;
2013-10-25 00:58:23 +02:00
$current_user = wp_get_current_user ();
2014-11-30 22:23:23 +01:00
if ( ! is_user_logged_in () ) {
2013-10-25 00:58:23 +02:00
die ();
2014-11-30 22:23:23 +01:00
}
2013-10-25 00:58:23 +02:00
$result = validate_blog_form ();
2014-05-16 16:43:25 +02:00
2014-07-17 11:12:16 +02:00
// Extracted values set/overwrite globals.
2017-12-01 00:11:00 +01:00
$domain = $result [ 'domain' ];
$path = $result [ 'path' ];
$blogname = $result [ 'blogname' ];
2014-05-16 16:43:25 +02:00
$blog_title = $result [ 'blog_title' ];
2017-12-01 00:11:00 +01:00
$errors = $result [ 'errors' ];
2013-10-25 00:58:23 +02:00
2018-02-27 03:31:31 +01:00
if ( $errors -> has_errors () ) {
2017-12-01 00:11:00 +01:00
signup_another_blog ( $blogname , $blog_title , $errors );
2013-10-25 00:58:23 +02:00
return false ;
}
$public = ( int ) $_POST [ 'blog_public' ];
$blog_meta_defaults = array (
'lang_id' => 1 ,
2017-12-01 00:11:00 +01:00
'public' => $public ,
2013-10-25 00:58:23 +02:00
);
2015-10-14 01:46:25 +02:00
// Handle the language setting for the new site.
if ( ! empty ( $_POST [ 'WPLANG' ] ) ) {
$languages = signup_get_available_languages ();
2020-04-05 05:02:11 +02:00
if ( in_array ( $_POST [ 'WPLANG' ], $languages , true ) ) {
2015-10-14 01:46:25 +02:00
$language = wp_unslash ( sanitize_text_field ( $_POST [ 'WPLANG' ] ) );
if ( $language ) {
$blog_meta_defaults [ 'WPLANG' ] = $language ;
}
}
}
2013-10-25 00:58:23 +02:00
/**
2016-05-23 18:44:27 +02:00
* Filters the new site meta variables .
2013-10-25 00:58:23 +02:00
*
2016-05-23 19:07:28 +02:00
* Use the { @ see 'add_signup_meta' } filter instead .
*
2017-08-01 22:44:43 +02:00
* @ since MU ( 3.0 . 0 )
2016-05-23 19:07:28 +02:00
* @ deprecated 3.0 . 0 Use the { @ see 'add_signup_meta' } filter instead .
2013-10-25 00:58:23 +02:00
*
* @ param array $blog_meta_defaults An array of default blog meta variables .
*/
2019-11-09 13:59:03 +01:00
$meta_defaults = apply_filters_deprecated ( 'signup_create_blog_meta' , array ( $blog_meta_defaults ), '3.0.0' , 'add_signup_meta' );
2015-10-14 01:46:25 +02:00
2013-10-25 00:58:23 +02:00
/**
2016-05-23 18:44:27 +02:00
* Filters the new default site meta variables .
2013-10-25 00:58:23 +02:00
*
* @ 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 .
* }
*/
2014-05-16 16:43:25 +02:00
$meta = apply_filters ( 'add_signup_meta' , $meta_defaults );
2013-10-25 00:58:23 +02:00
2017-08-12 15:11:43 +02:00
$blog_id = wpmu_create_blog ( $domain , $path , $blog_title , $current_user -> ID , $meta , get_current_network_id () );
2015-10-03 02:34:25 +02:00
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 );
2013-10-25 00:58:23 +02:00
return true ;
}
/**
Docs: Improve documentation in `wp-signup.php`.
* Document the `$active_signup` global in `signup_user()`.
* Update some DocBlocks per the documentation standards.
* Expand some function descriptions for clarity.
Follow-up to [37535], [37536], [41200], [43326], [49078], [50828].
Props mt8.biz, sabernhardt, audrasjb, westonruter, jayupadhyay01, mukesh27, SergeyBiryukov.
Fixes #41566.
Built from https://develop.svn.wordpress.org/trunk@51699
git-svn-id: http://core.svn.wordpress.org/trunk@51305 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-08-31 14:25:00 +02:00
* Shows a message confirming that the new site has been created .
2013-10-25 00:58:23 +02:00
*
2017-08-01 22:44:43 +02:00
* @ since MU ( 3.0 . 0 )
2015-10-03 02:34:25 +02:00
* @ since 4.4 . 0 Added the `$blog_id` parameter .
2013-10-25 00:58:23 +02:00
*
2016-01-28 04:51:26 +01:00
* @ param string $domain The domain URL .
* @ param string $path The site root path .
* @ param string $blog_title The site title .
* @ param string $user_name The username .
* @ param string $user_email The user ' s email address .
2016-05-23 19:07:28 +02:00
* @ param array $meta Any additional meta from the { @ see 'add_signup_meta' } filter in validate_blog_signup () .
2016-01-28 04:51:26 +01:00
* @ param int $blog_id The site ID .
2013-10-25 00:58:23 +02:00
*/
2015-10-03 02:34:25 +02:00
function confirm_another_blog_signup ( $domain , $path , $blog_title , $user_name , $user_email = '' , $meta = array (), $blog_id = 0 ) {
if ( $blog_id ) {
switch_to_blog ( $blog_id );
$home_url = home_url ( '/' );
$login_url = wp_login_url ();
restore_current_blog ();
} else {
$home_url = 'http://' . $domain . $path ;
$login_url = 'http://' . $domain . $path . 'wp-login.php' ;
}
2017-12-01 00:11:00 +01:00
$site = sprintf (
'<a href="%1$s">%2$s</a>' ,
2015-10-03 02:34:25 +02:00
esc_url ( $home_url ),
$blog_title
);
2013-10-25 00:58:23 +02:00
?>
2017-12-01 00:11:00 +01:00
< h2 >
< ? php
2019-09-03 02:41:05 +02:00
/* translators: %s: Site title. */
2016-05-24 22:44:29 +02:00
printf ( __ ( 'The site %s is yours.' ), $site );
2017-12-01 00:11:00 +01:00
?>
</ h2 >
2013-10-25 00:58:23 +02:00
< p >
2017-12-01 00:11:00 +01:00
< ? php
printf (
2019-09-03 02:41:05 +02:00
/* translators: 1: Link to new site, 2: Login URL, 3: Username. */
2017-10-18 19:36:50 +02:00
__ ( '%1$s is your new site. <a href="%2$s">Log in</a> as “%3$s” using your existing password.' ),
sprintf (
'<a href="%s">%s</a>' ,
esc_url ( $home_url ),
untrailingslashit ( $domain . $path )
),
2015-10-03 02:34:25 +02:00
esc_url ( $login_url ),
$user_name
2017-12-01 00:11:00 +01:00
);
?>
2013-10-25 00:58:23 +02:00
</ p >
< ? php
/**
* Fires when the site or user sign - up process is complete .
*
* @ since 3.0 . 0
*/
do_action ( 'signup_finished' );
}
/**
2020-09-30 23:54:07 +02:00
* Shows a form for a visitor to sign up for a new user account .
2013-10-25 00:58:23 +02:00
*
2017-08-01 22:44:43 +02:00
* @ since MU ( 3.0 . 0 )
2013-10-25 00:58:23 +02:00
*
Docs: Improve documentation in `wp-signup.php`.
* Document the `$active_signup` global in `signup_user()`.
* Update some DocBlocks per the documentation standards.
* Expand some function descriptions for clarity.
Follow-up to [37535], [37536], [41200], [43326], [49078], [50828].
Props mt8.biz, sabernhardt, audrasjb, westonruter, jayupadhyay01, mukesh27, SergeyBiryukov.
Fixes #41566.
Built from https://develop.svn.wordpress.org/trunk@51699
git-svn-id: http://core.svn.wordpress.org/trunk@51305 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-08-31 14:25:00 +02:00
* @ global string $active_signup String that returns registration type . The value can be
* 'all' , 'none' , 'blog' , or 'user' .
*
2016-05-24 06:16:27 +02:00
* @ param string $user_name The username .
* @ param string $user_email The user ' s email .
2020-01-11 19:32:05 +01:00
* @ param WP_Error | string $errors A WP_Error object containing existing errors . Defaults to empty string .
2013-10-25 00:58:23 +02:00
*/
2013-11-13 04:23:10 +01:00
function signup_user ( $user_name = '' , $user_email = '' , $errors = '' ) {
global $active_signup ;
2013-10-25 00:58:23 +02:00
2017-12-01 00:11:00 +01:00
if ( ! is_wp_error ( $errors ) ) {
2013-10-25 00:58:23 +02:00
$errors = new WP_Error ();
2017-12-01 00:11:00 +01:00
}
2013-10-25 00:58:23 +02:00
2017-12-01 00:11:00 +01:00
$signup_for = isset ( $_POST [ 'signup_for' ] ) ? esc_html ( $_POST [ 'signup_for' ] ) : 'blog' ;
2013-10-25 00:58:23 +02:00
$signup_user_defaults = array (
'user_name' => $user_name ,
'user_email' => $user_email ,
'errors' => $errors ,
);
/**
2016-05-23 18:44:27 +02:00
* Filters the default user variables used on the user sign - up form .
2013-10-25 00:58:23 +02:00
*
* @ since 3.0 . 0
*
* @ param array $signup_user_defaults {
* An array of default user variables .
*
2016-05-24 06:16:27 +02:00
* @ type string $user_name The user username .
* @ type string $user_email The user email address .
* @ type WP_Error $errors A WP_Error object with possible errors relevant to the sign - up user .
2013-10-25 00:58:23 +02:00
* }
*/
$filtered_results = apply_filters ( 'signup_user_init' , $signup_user_defaults );
2017-12-01 00:11:00 +01:00
$user_name = $filtered_results [ 'user_name' ];
$user_email = $filtered_results [ 'user_email' ];
$errors = $filtered_results [ 'errors' ];
2013-10-25 00:58:23 +02:00
?>
2017-12-01 00:11:00 +01:00
< h2 >
< ? php
2019-09-03 02:41:05 +02:00
/* translators: %s: Name of the network. */
2016-10-19 06:47:30 +02:00
printf ( __ ( 'Get your own %s account in seconds' ), get_network () -> site_name );
2017-12-01 00:11:00 +01:00
?>
</ h2 >
2014-07-08 19:52:14 +02:00
< form id = " setupform " method = " post " action = " wp-signup.php " novalidate = " novalidate " >
2013-10-25 00:58:23 +02:00
< input type = " hidden " name = " stage " value = " validate-user-signup " />
< ? php
2013-10-25 00:59:20 +02:00
/** This action is documented in wp-signup.php */
2013-10-25 00:58:23 +02:00
do_action ( 'signup_hidden_fields' , 'validate-user' );
?>
2017-12-01 00:11:00 +01:00
< ? php show_user_form ( $user_name , $user_email , $errors ); ?>
2013-10-25 00:58:23 +02:00
2022-09-17 01:13:10 +02:00
< ? php if ( 'blog' === $active_signup ) : ?>
2013-10-25 00:58:23 +02:00
< input id = " signupblog " type = " hidden " name = " signup_for " value = " blog " />
2022-09-17 01:13:10 +02:00
< ? php elseif ( 'user' === $active_signup ) : ?>
2013-10-25 00:58:23 +02:00
< input id = " signupblog " type = " hidden " name = " signup_for " value = " user " />
2022-09-17 01:13:10 +02:00
< ? php else : ?>
< fieldset class = " signup-options " >
< legend >< ? php _e ( 'Create a site or only a username:' ); ?> </legend>
< p class = " wp-signup-radio-buttons " >
< span class = " wp-signup-radio-button " >
< input id = " signupblog " type = " radio " name = " signup_for " value = " blog " < ? php checked ( $signup_for , 'blog' ); ?> />
< label class = " checkbox " for = " signupblog " >< ? php _e ( 'Gimme a site!' ); ?> </label>
</ span >
< span class = " wp-signup-radio-button " >
< input id = " signupuser " type = " radio " name = " signup_for " value = " user " < ? php checked ( $signup_for , 'user' ); ?> />
< label class = " checkbox " for = " signupuser " >< ? php _e ( 'Just a username, please.' ); ?> </label>
</ span >
</ p >
</ fieldset >
< ? php endif ; ?>
2013-10-25 00:58:23 +02:00
2017-12-01 00:11:00 +01:00
< p class = " submit " >< input type = " submit " name = " submit " class = " submit " value = " <?php esc_attr_e( 'Next' ); ?> " /></ p >
2013-10-25 00:58:23 +02:00
</ form >
< ? php
}
/**
2021-10-25 02:23:57 +02:00
* Validates the new user sign - up .
2013-10-25 00:58:23 +02:00
*
2017-08-01 22:44:43 +02:00
* @ since MU ( 3.0 . 0 )
2013-10-25 00:58:23 +02:00
*
2021-10-25 02:23:57 +02:00
* @ return bool True if new user sign - up was validated , false on error .
2013-10-25 00:58:23 +02:00
*/
function validate_user_signup () {
2017-12-01 00:11:00 +01:00
$result = validate_user_form ();
$user_name = $result [ 'user_name' ];
2014-05-16 16:53:15 +02:00
$user_email = $result [ 'user_email' ];
2017-12-01 00:11:00 +01:00
$errors = $result [ 'errors' ];
2013-10-25 00:58:23 +02:00
2018-02-27 03:31:31 +01:00
if ( $errors -> has_errors () ) {
2017-12-01 00:11:00 +01:00
signup_user ( $user_name , $user_email , $errors );
2013-10-25 00:58:23 +02:00
return false ;
}
2020-01-09 01:55:05 +01:00
if ( 'blog' === $_POST [ 'signup_for' ] ) {
2017-12-01 00:11:00 +01:00
signup_blog ( $user_name , $user_email );
2013-10-25 00:58:23 +02:00
return false ;
}
2013-10-25 00:59:20 +02:00
/** This filter is documented in wp-signup.php */
2013-10-25 00:58:23 +02:00
wpmu_signup_user ( $user_name , $user_email , apply_filters ( 'add_signup_meta' , array () ) );
2017-12-01 00:11:00 +01:00
confirm_user_signup ( $user_name , $user_email );
2013-10-25 00:58:23 +02:00
return true ;
}
/**
Docs: Improve documentation in `wp-signup.php`.
* Document the `$active_signup` global in `signup_user()`.
* Update some DocBlocks per the documentation standards.
* Expand some function descriptions for clarity.
Follow-up to [37535], [37536], [41200], [43326], [49078], [50828].
Props mt8.biz, sabernhardt, audrasjb, westonruter, jayupadhyay01, mukesh27, SergeyBiryukov.
Fixes #41566.
Built from https://develop.svn.wordpress.org/trunk@51699
git-svn-id: http://core.svn.wordpress.org/trunk@51305 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-08-31 14:25:00 +02:00
* Shows a message confirming that the new user has been registered and is awaiting activation .
2013-10-25 00:58:23 +02:00
*
2017-08-01 22:44:43 +02:00
* @ since MU ( 3.0 . 0 )
2013-10-25 00:58:23 +02:00
*
Docs: Improve documentation in `wp-signup.php`.
* Document the `$active_signup` global in `signup_user()`.
* Update some DocBlocks per the documentation standards.
* Expand some function descriptions for clarity.
Follow-up to [37535], [37536], [41200], [43326], [49078], [50828].
Props mt8.biz, sabernhardt, audrasjb, westonruter, jayupadhyay01, mukesh27, SergeyBiryukov.
Fixes #41566.
Built from https://develop.svn.wordpress.org/trunk@51699
git-svn-id: http://core.svn.wordpress.org/trunk@51305 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-08-31 14:25:00 +02:00
* @ param string $user_name The username .
* @ param string $user_email The user ' s email address .
2013-10-25 00:58:23 +02:00
*/
2017-12-01 00:11:00 +01:00
function confirm_user_signup ( $user_name , $user_email ) {
2013-10-25 00:58:23 +02:00
?>
2017-12-01 00:11:00 +01:00
< h2 >
< ? php
2019-09-03 02:41:05 +02:00
/* translators: %s: Username. */
2017-12-01 00:11:00 +01:00
printf ( __ ( '%s is your new username' ), $user_name )
?>
</ h2 >
< p >< ? php _e ( 'But, before you can start using your new username, <strong>you must activate it</strong>.' ); ?> </p>
< p >
< ? php
2023-06-09 17:08:24 +02:00
/* translators: %s: The user email address. */
printf ( __ ( 'Check your inbox at %s and click on the given link.' ), '<strong>' . $user_email . '</strong>' );
2017-12-01 00:11:00 +01:00
?>
</ p >
2013-10-25 00:58:23 +02:00
< p >< ? php _e ( 'If you do not activate your username within two days, you will have to sign up again.' ); ?> </p>
< ? php
2013-10-25 00:59:20 +02:00
/** This action is documented in wp-signup.php */
2013-10-25 00:58:23 +02:00
do_action ( 'signup_finished' );
}
/**
2020-09-30 23:54:07 +02:00
* Shows a form for a user or visitor to sign up for a new site .
2013-10-25 00:58:23 +02:00
*
2017-08-01 22:44:43 +02:00
* @ since MU ( 3.0 . 0 )
2013-10-25 00:58:23 +02:00
*
2016-05-24 06:16:27 +02:00
* @ param string $user_name The username .
* @ param string $user_email The user ' s email address .
* @ param string $blogname The site name .
* @ param string $blog_title The site title .
2020-01-11 19:32:05 +01:00
* @ param WP_Error | string $errors A WP_Error object containing existing errors . Defaults to empty string .
2013-10-25 00:58:23 +02:00
*/
2017-12-01 00:11:00 +01:00
function signup_blog ( $user_name = '' , $user_email = '' , $blogname = '' , $blog_title = '' , $errors = '' ) {
if ( ! is_wp_error ( $errors ) ) {
2013-10-25 00:58:23 +02:00
$errors = new WP_Error ();
2017-12-01 00:11:00 +01:00
}
2013-10-25 00:58:23 +02:00
$signup_blog_defaults = array (
'user_name' => $user_name ,
'user_email' => $user_email ,
'blogname' => $blogname ,
'blog_title' => $blog_title ,
2017-12-01 00:11:00 +01:00
'errors' => $errors ,
2013-10-25 00:58:23 +02:00
);
/**
2016-05-23 18:44:27 +02:00
* Filters the default site creation variables for the site sign - up form .
2013-10-25 00:58:23 +02:00
*
* @ since 3.0 . 0
*
* @ param array $signup_blog_defaults {
* An array of default site creation variables .
*
2016-05-24 06:16:27 +02:00
* @ type string $user_name The user username .
* @ type string $user_email The user email address .
* @ type string $blogname The blogname .
* @ type string $blog_title The title of the site .
* @ type WP_Error $errors A WP_Error object with possible errors relevant to new site creation variables .
2013-10-25 00:58:23 +02:00
* }
*/
$filtered_results = apply_filters ( 'signup_blog_init' , $signup_blog_defaults );
2017-12-01 00:11:00 +01:00
$user_name = $filtered_results [ 'user_name' ];
2013-10-25 00:58:23 +02:00
$user_email = $filtered_results [ 'user_email' ];
2017-12-01 00:11:00 +01:00
$blogname = $filtered_results [ 'blogname' ];
2013-10-25 00:58:23 +02:00
$blog_title = $filtered_results [ 'blog_title' ];
2017-12-01 00:11:00 +01:00
$errors = $filtered_results [ 'errors' ];
2013-10-25 00:58:23 +02:00
2017-12-01 00:11:00 +01:00
if ( empty ( $blogname ) ) {
2013-10-25 00:58:23 +02:00
$blogname = $user_name ;
2017-12-01 00:11:00 +01:00
}
2013-10-25 00:58:23 +02:00
?>
< form id = " setupform " method = " post " action = " wp-signup.php " >
< input type = " hidden " name = " stage " value = " validate-blog-signup " />
2017-12-01 00:11:00 +01:00
< input type = " hidden " name = " user_name " value = " <?php echo esc_attr( $user_name ); ?> " />
< input type = " hidden " name = " user_email " value = " <?php echo esc_attr( $user_email ); ?> " />
2013-10-25 00:58:23 +02:00
< ? php
2013-10-25 00:59:20 +02:00
/** This action is documented in wp-signup.php */
2013-10-25 00:58:23 +02:00
do_action ( 'signup_hidden_fields' , 'validate-site' );
?>
2017-12-01 00:11:00 +01:00
< ? php show_blog_form ( $blogname , $blog_title , $errors ); ?>
2021-10-25 02:23:57 +02:00
< p class = " submit " >< input type = " submit " name = " submit " class = " submit " value = " <?php esc_attr_e( 'Sign up' ); ?> " /></ p >
2013-10-25 00:58:23 +02:00
</ form >
< ? php
}
/**
Docs: Improve documentation in `wp-signup.php`.
* Document the `$active_signup` global in `signup_user()`.
* Update some DocBlocks per the documentation standards.
* Expand some function descriptions for clarity.
Follow-up to [37535], [37536], [41200], [43326], [49078], [50828].
Props mt8.biz, sabernhardt, audrasjb, westonruter, jayupadhyay01, mukesh27, SergeyBiryukov.
Fixes #41566.
Built from https://develop.svn.wordpress.org/trunk@51699
git-svn-id: http://core.svn.wordpress.org/trunk@51305 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-08-31 14:25:00 +02:00
* Validates new site signup .
2013-10-25 00:58:23 +02:00
*
2017-08-01 22:44:43 +02:00
* @ since MU ( 3.0 . 0 )
2013-10-25 00:58:23 +02:00
*
2021-10-25 02:23:57 +02:00
* @ return bool True if the site sign - up was validated , false on error .
2013-10-25 00:58:23 +02:00
*/
function validate_blog_signup () {
// Re-validate user info.
2014-05-16 16:53:15 +02:00
$user_result = wpmu_validate_user_signup ( $_POST [ 'user_name' ], $_POST [ 'user_email' ] );
2017-12-01 00:11:00 +01:00
$user_name = $user_result [ 'user_name' ];
$user_email = $user_result [ 'user_email' ];
2014-05-16 16:53:15 +02:00
$user_errors = $user_result [ 'errors' ];
2013-10-25 00:58:23 +02:00
2018-02-27 03:31:31 +01:00
if ( $user_errors -> has_errors () ) {
2014-05-16 16:53:15 +02:00
signup_user ( $user_name , $user_email , $user_errors );
2013-10-25 00:58:23 +02:00
return false ;
}
2017-12-01 00:11:00 +01:00
$result = wpmu_validate_blog_signup ( $_POST [ 'blogname' ], $_POST [ 'blog_title' ] );
$domain = $result [ 'domain' ];
$path = $result [ 'path' ];
$blogname = $result [ 'blogname' ];
2014-05-16 16:53:15 +02:00
$blog_title = $result [ 'blog_title' ];
2017-12-01 00:11:00 +01:00
$errors = $result [ 'errors' ];
2013-10-25 00:58:23 +02:00
2018-02-27 03:31:31 +01:00
if ( $errors -> has_errors () ) {
2017-12-01 00:11:00 +01:00
signup_blog ( $user_name , $user_email , $blogname , $blog_title , $errors );
2013-10-25 00:58:23 +02:00
return false ;
}
2017-12-01 00:11:00 +01:00
$public = ( int ) $_POST [ 'blog_public' ];
$signup_meta = array (
'lang_id' => 1 ,
'public' => $public ,
);
2013-10-25 00:58:23 +02:00
2015-10-14 01:46:25 +02:00
// Handle the language setting for the new site.
if ( ! empty ( $_POST [ 'WPLANG' ] ) ) {
$languages = signup_get_available_languages ();
2020-04-05 05:02:11 +02:00
if ( in_array ( $_POST [ 'WPLANG' ], $languages , true ) ) {
2015-10-14 01:46:25 +02:00
$language = wp_unslash ( sanitize_text_field ( $_POST [ 'WPLANG' ] ) );
if ( $language ) {
$signup_meta [ 'WPLANG' ] = $language ;
}
}
}
2013-10-25 00:59:20 +02:00
/** This filter is documented in wp-signup.php */
2014-05-16 16:53:15 +02:00
$meta = apply_filters ( 'add_signup_meta' , $signup_meta );
2013-10-25 00:58:23 +02:00
2017-12-01 00:11:00 +01:00
wpmu_signup_blog ( $domain , $path , $blog_title , $user_name , $user_email , $meta );
confirm_blog_signup ( $domain , $path , $blog_title , $user_name , $user_email , $meta );
2013-10-25 00:58:23 +02:00
return true ;
}
/**
2020-09-30 23:54:07 +02:00
* Shows a message confirming that the new site has been registered and is awaiting activation .
2013-10-25 00:58:23 +02:00
*
2017-08-01 22:44:43 +02:00
* @ since MU ( 3.0 . 0 )
2013-10-25 00:58:23 +02:00
*
2020-09-30 23:54:07 +02:00
* @ param string $domain The domain or subdomain of the site .
* @ param string $path The path of the site .
* @ param string $blog_title The title of the new site .
2020-07-23 23:11:05 +02:00
* @ param string $user_name The user ' s username .
* @ param string $user_email The user ' s email address .
* @ param array $meta Any additional meta from the { @ see 'add_signup_meta' } filter in validate_blog_signup () .
2013-10-25 00:58:23 +02:00
*/
function confirm_blog_signup ( $domain , $path , $blog_title , $user_name = '' , $user_email = '' , $meta = array () ) {
?>
2017-12-01 00:11:00 +01:00
< h2 >
< ? php
2019-09-03 02:41:05 +02:00
/* translators: %s: Site address. */
2017-12-01 00:11:00 +01:00
printf ( __ ( 'Congratulations! Your new site, %s, is almost ready.' ), " <a href='http:// { $domain } { $path } '> { $blog_title } </a> " )
?>
</ h2 >
2013-10-25 00:58:23 +02:00
2017-12-01 00:11:00 +01:00
< p >< ? php _e ( 'But, before you can start using your site, <strong>you must activate it</strong>.' ); ?> </p>
< p >
< ? php
2023-06-09 17:08:24 +02:00
/* translators: %s: The user email address. */
printf ( __ ( 'Check your inbox at %s and click on the given link.' ), '<strong>' . $user_email . '</strong>' );
2017-12-01 00:11:00 +01:00
?>
</ p >
2013-10-25 00:58:23 +02:00
< p >< ? php _e ( 'If you do not activate your site within two days, you will have to sign up again.' ); ?> </p>
< h2 >< ? php _e ( 'Still waiting for your email?' ); ?> </h2>
2022-09-17 01:13:10 +02:00
< p >< ? php _e ( 'If you have not received your email yet, there are a number of things you can do:' ); ?> </p>
< ul id = " noemail-tips " >
< li >< p >< strong >< ? php _e ( 'Wait a little longer. Sometimes delivery of email can be delayed by processes outside of our control.' ); ?> </strong></p></li>
< li >< p >< ? php _e ( 'Check the junk or spam folder of your email client. Sometime emails wind up there by mistake.' ); ?> </p></li>
< li >
< ? php
/* translators: %s: Email address. */
printf ( __ ( 'Have you entered your email correctly? You have entered %s, if it’s incorrect, you will not receive your email.' ), $user_email );
?>
</ li >
</ ul >
2013-10-25 00:58:23 +02:00
< ? php
2013-10-25 00:59:20 +02:00
/** This action is documented in wp-signup.php */
2013-10-25 00:58:23 +02:00
do_action ( 'signup_finished' );
}
2015-10-14 01:46:25 +02:00
/**
2021-10-25 02:23:57 +02:00
* Retrieves languages available during the site / user sign - up process .
2015-10-14 01:46:25 +02:00
*
* @ since 4.4 . 0
*
* @ see get_available_languages ()
*
2021-05-07 22:16:00 +02:00
* @ return string [] Array of available language codes . Language codes are formed by
* stripping the . mo extension from the language file names .
2015-10-14 01:46:25 +02:00
*/
function signup_get_available_languages () {
/**
2021-10-25 02:23:57 +02:00
* Filters the list of available languages for front - end site sign - ups .
2015-10-14 01:46:25 +02:00
*
* Passing an empty array to this hook will disable output of the setting on the
2021-10-25 02:23:57 +02:00
* sign - up form , and the default language will be used when creating the site .
2015-10-14 01:46:25 +02:00
*
* Languages not already installed will be stripped .
*
* @ since 4.4 . 0
*
2021-05-07 22:16:00 +02:00
* @ param string [] $languages Array of available language codes . Language codes are formed by
* stripping the . mo extension from the language file names .
2015-10-14 01:46:25 +02:00
*/
$languages = ( array ) apply_filters ( 'signup_get_available_languages' , get_available_languages () );
/*
* Strip any non - installed languages and return .
*
* Re - call get_available_languages () here in case a language pack was installed
* in a callback hooked to the 'signup_get_available_languages' filter before this point .
*/
return array_intersect_assoc ( $languages , get_available_languages () );
}
2020-01-29 01:45:18 +01:00
// Main.
2015-10-07 19:11:25 +02:00
$active_signup = get_site_option ( 'registration' , 'none' );
2016-05-23 18:44:27 +02:00
2013-10-25 00:58:23 +02:00
/**
2016-05-23 18:44:27 +02:00
* Filters the type of site sign - up .
2013-10-25 00:58:23 +02:00
*
* @ since 3.0 . 0
*
* @ param string $active_signup String that returns registration type . The value can be
* 'all' , 'none' , 'blog' , or 'user' .
*/
$active_signup = apply_filters ( 'wpmu_active_signup' , $active_signup );
2017-01-24 12:08:42 +01:00
if ( current_user_can ( 'manage_network' ) ) {
2017-01-20 17:52:39 +01:00
echo '<div class="mu_alert">' ;
_e ( 'Greetings Network Administrator!' );
echo ' ' ;
switch ( $active_signup ) {
case 'none' :
_e ( 'The network currently disallows registrations.' );
break ;
case 'blog' :
_e ( 'The network currently allows site registrations.' );
break ;
case 'user' :
_e ( 'The network currently allows user registrations.' );
break ;
default :
_e ( 'The network currently allows both site and user registrations.' );
break ;
}
echo ' ' ;
2019-09-03 02:41:05 +02:00
/* translators: %s: URL to Network Settings screen. */
2017-01-20 17:52:39 +01:00
printf ( __ ( 'To change or disable registration go to your <a href="%s">Options page</a>.' ), esc_url ( network_admin_url ( 'settings.php' ) ) );
echo '</div>' ;
2016-05-24 22:44:29 +02:00
}
2013-10-25 00:58:23 +02:00
2017-12-01 00:11:00 +01:00
$newblogname = isset ( $_GET [ 'new' ] ) ? strtolower ( preg_replace ( '/^-|-$|[^-a-zA-Z0-9]/' , '' , $_GET [ 'new' ] ) ) : null ;
2013-10-25 00:58:23 +02:00
$current_user = wp_get_current_user ();
2019-01-16 17:51:52 +01:00
if ( 'none' === $active_signup ) {
2013-10-25 00:58:23 +02:00
_e ( 'Registration has been disabled.' );
2019-01-16 17:51:52 +01:00
} elseif ( 'blog' === $active_signup && ! is_user_logged_in () ) {
2015-09-15 19:11:35 +02:00
$login_url = wp_login_url ( network_site_url ( 'wp-signup.php' ) );
2019-09-03 02:41:05 +02:00
/* translators: %s: Login URL. */
2016-05-24 22:44:29 +02:00
printf ( __ ( 'You must first <a href="%s">log in</a>, and then you can create a new site.' ), $login_url );
2013-10-25 00:58:23 +02:00
} else {
2017-12-01 00:11:00 +01:00
$stage = isset ( $_POST [ 'stage' ] ) ? $_POST [ 'stage' ] : 'default' ;
2013-10-25 00:58:23 +02:00
switch ( $stage ) {
2017-12-01 00:11:00 +01:00
case 'validate-user-signup' :
2019-01-16 17:51:52 +01:00
if ( 'all' === $active_signup
|| ( 'blog' === $_POST [ 'signup_for' ] && 'blog' === $active_signup )
|| ( 'user' === $_POST [ 'signup_for' ] && 'user' === $active_signup )
) {
2013-10-25 00:58:23 +02:00
validate_user_signup ();
2017-12-01 00:11:00 +01:00
} else {
2013-10-25 00:58:23 +02:00
_e ( 'User registration has been disabled.' );
2017-12-01 00:11:00 +01:00
}
break ;
2013-10-25 00:58:23 +02:00
case 'validate-blog-signup' :
2019-01-16 17:51:52 +01:00
if ( 'all' === $active_signup || 'blog' === $active_signup ) {
2013-10-25 00:58:23 +02:00
validate_blog_signup ();
2017-12-01 00:11:00 +01:00
} else {
2013-10-25 00:58:23 +02:00
_e ( 'Site registration has been disabled.' );
2017-12-01 00:11:00 +01:00
}
2013-10-25 00:58:23 +02:00
break ;
case 'gimmeanotherblog' :
validate_another_blog_signup ();
break ;
case 'default' :
2017-12-01 00:11:00 +01:00
default :
$user_email = isset ( $_POST [ 'user_email' ] ) ? $_POST [ 'user_email' ] : '' ;
2013-10-25 00:58:23 +02:00
/**
* Fires when the site sign - up form is sent .
*
* @ since 3.0 . 0
*/
do_action ( 'preprocess_signup_form' );
2019-01-16 17:51:52 +01:00
if ( is_user_logged_in () && ( 'all' === $active_signup || 'blog' === $active_signup ) ) {
2017-12-01 00:11:00 +01:00
signup_another_blog ( $newblogname );
2019-01-16 17:51:52 +01:00
} elseif ( ! is_user_logged_in () && ( 'all' === $active_signup || 'user' === $active_signup ) ) {
2013-10-25 00:58:23 +02:00
signup_user ( $newblogname , $user_email );
2019-01-16 17:51:52 +01:00
} elseif ( ! is_user_logged_in () && ( 'blog' === $active_signup ) ) {
2013-10-25 00:58:23 +02:00
_e ( 'Sorry, new registrations are not allowed at this time.' );
2017-12-01 00:11:00 +01:00
} else {
2013-10-25 00:58:23 +02:00
_e ( 'You are logged in already. No need to register again!' );
2017-12-01 00:11:00 +01:00
}
2013-10-25 00:58:23 +02:00
if ( $newblogname ) {
$newblog = get_blogaddress_by_name ( $newblogname );
2019-01-16 17:51:52 +01:00
if ( 'blog' === $active_signup || 'all' === $active_signup ) {
2017-12-01 00:11:00 +01:00
printf (
2019-09-03 02:41:05 +02:00
/* translators: %s: Site address. */
2021-01-27 22:03:57 +01:00
'<p>' . __ ( 'The site you were looking for, %s, does not exist, but you can create it now!' ) . '</p>' ,
2015-10-30 03:09:24 +01:00
'<strong>' . $newblog . '</strong>'
);
2018-08-30 14:14:24 +02:00
} else {
2017-12-01 00:11:00 +01:00
printf (
2019-09-03 02:41:05 +02:00
/* translators: %s: Site address. */
2021-01-27 22:03:57 +01:00
'<p>' . __ ( 'The site you were looking for, %s, does not exist.' ) . '</p>' ,
2015-10-30 03:09:24 +01:00
'<strong>' . $newblog . '</strong>'
);
2017-12-01 00:11:00 +01:00
}
2013-10-25 00:58:23 +02:00
}
break ;
}
}
?>
</ div >
</ div >
< ? php
/**
* Fires after the sign - up forms , before wp_footer .
*
* @ since 3.0 . 0
*/
2017-12-01 00:11:00 +01:00
do_action ( 'after_signup_form' );
?>
2013-10-25 00:58:23 +02:00
2017-12-01 00:11:00 +01:00
< ? php
get_footer ( 'wp-signup' );