返回介绍

wp_new_user_notification()

发布于 2017-09-11 12:31:37 字数 7802 浏览 1191 评论 0 收藏 0

wp_new_user_notification( int $user_id,  null $deprecated = null,  string $notify = '' )

Email login credentials to a newly-registered user.


description

A new user registration notification is also sent to admin email.


参数

$user_id

(int) (Required) User ID.

$deprecated

(null) (Optional) Not used (argument deprecated).

Default value: null

$notify

(string) (Optional) Type of notification that should happen. Accepts 'admin' or an empty string (admin only), 'user', or 'both' (admin and user).

Default value: ''


源代码

File: wp-includes/pluggable.php

function wp_new_user_notification( $user_id, $deprecated = null, $notify = '' ) {
	if ( $deprecated !== null ) {
		_deprecated_argument( __FUNCTION__, '4.3.1' );
	}

	global $wpdb, $wp_hasher;
	$user = get_userdata( $user_id );

	// The blogname option is escaped with esc_html on the way into the database in sanitize_option
	// we want to reverse this for the plain text arena of emails.
	$blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);

	if ( 'user' !== $notify ) {
		$switched_locale = switch_to_locale( get_locale() );
		$message  = sprintf( __( 'New user registration on your site %s:' ), $blogname ) . "\r\n\r\n";
		$message .= sprintf( __( 'Username: %s' ), $user->user_login ) . "\r\n\r\n";
		$message .= sprintf( __( 'Email: %s' ), $user->user_email ) . "\r\n";

		@wp_mail( get_option( 'admin_email' ), sprintf( __( '[%s] New User Registration' ), $blogname ), $message );

		if ( $switched_locale ) {
			restore_previous_locale();
		}
	}

	// `$deprecated was pre-4.3 `$plaintext_pass`. An empty `$plaintext_pass` didn't sent a user notification.
	if ( 'admin' === $notify || ( empty( $deprecated ) && empty( $notify ) ) ) {
		return;
	}

	// Generate something random for a password reset key.
	$key = wp_generate_password( 20, false );

	/** This action is documented in wp-login.php */
	do_action( 'retrieve_password_key', $user->user_login, $key );

	// Now insert the key, hashed, into the DB.
	if ( empty( $wp_hasher ) ) {
		require_once ABSPATH . WPINC . '/class-phpass.php';
		$wp_hasher = new PasswordHash( 8, true );
	}
	$hashed = time() . ':' . $wp_hasher->HashPassword( $key );
	$wpdb->update( $wpdb->users, array( 'user_activation_key' => $hashed ), array( 'user_login' => $user->user_login ) );

	$switched_locale = switch_to_locale( get_user_locale( $user ) );

	$message = sprintf(__('Username: %s'), $user->user_login) . "\r\n\r\n";
	$message .= __('To set your password, visit the following address:') . "\r\n\r\n";
	$message .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login') . ">\r\n\r\n";

	$message .= wp_login_url() . "\r\n";

	wp_mail($user->user_email, sprintf(__('[%s] Your username and password info'), $blogname), $message);

	if ( $switched_locale ) {
		restore_previous_locale();
	}
}

更新日志

Versiondescription
4.6.0The $notify parameter accepts 'user' for sending notification only to the user created.
4.3.1The $plaintext_pass parameter was deprecated. $notify added as a third parameter.
4.3.0The $plaintext_pass parameter was changed to $notify.
2.0.0Introduced.

More Information

  • This function can be replaced via plugins. If plugins do not redefine these functions, then this will be used instead.

相关函数

Uses

  • wp-includes/l10n.php: restore_previous_locale()
  • wp-includes/l10n.php: switch_to_locale()
  • wp-includes/l10n.php: get_user_locale()
  • wp-includes/user.php: retrieve_password_key
  • wp-includes/l10n.php: __()
  • wp-includes/l10n.php: get_locale()
  • wp-includes/formatting.php: wp_specialchars_decode()
  • wp-includes/pluggable.php: wp_generate_password()
  • wp-includes/pluggable.php: get_userdata()
  • wp-includes/pluggable.php: wp_mail()
  • wp-includes/general-template.php: wp_login_url()
  • wp-includes/functions.php: _deprecated_argument()
  • wp-includes/link-template.php: network_site_url()
  • wp-includes/plugin.php: do_action()
  • wp-includes/option.php: get_option()
  • wp-includes/wp-db.php: wpdb::update()
  • Show 11 more uses Hide more uses

Used By

  • wp-includes/user.php: wp_send_new_user_notifications()

User Contributed Notes

  1. Skip to note content You must log in to vote on the helpfulness of this noteVote results for this note: -3You must log in to vote on the helpfulness of this note Contributed by mit2sumit

    After you insert new user with wp_insert_user(), you can call this wp_new_user_notification() function to send mail for newly registered users.
    However, In order to customise them, you need to define this function and save it as a plugin of its own. But, it still have a chance that some other plugin (that is called before this) have control over it. So, the best way of customising it is saving it as a mu-plugin. Just create a folder ‘mu-plugins’ under wp-content and save it under a php filename.
    Read more about mu-plugin here: https://codex.wordpress.org/Must_Use_Plugins

    
    // Redefine user notification function
    if ( !function_exists('wp_new_user_notification') ) {
        function wp_new_user_notification( $user_id, $plaintext_pass = '' ) {
            $user = new WP_User($user_id);
     
            $user_login = stripslashes($user->user_login);
            $user_email = stripslashes($user->user_email);
     
            $message  = sprintf(__('New user registration on your blog %s:'), get_option('blogname')) . "rnrn";
            $message .= sprintf(__('Username: %s'), $user_login) . "rnrn";
            $message .= sprintf(__('E-mail: %s'), $user_email) . "rn";
     
            @wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration'), get_option('blogname')), $message);
     
            if ( empty($plaintext_pass) )
                return;
     
            $message  = __('Hi there,') . "rnrn";
            $message .= sprintf(__("Welcome to %s! Here's how to log in:"), get_option('blogname')) . "rnrn";
            $message .= wp_login_url() . "rn";
            $message .= sprintf(__('Username: %s'), $user_login) . "rn";
            $message .= sprintf(__('Password: %s'), $plaintext_pass) . "rnrn";
            $message .= sprintf(__('If you have any problems, please contact me at %s.'), get_option('admin_email')) . "rnrn";
            $message .= __('Adios!');
     
            wp_mail($user_email, sprintf(__('[%s] Your username and password'), get_option('blogname')), $message);
     
        }
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文