Opened 9 years ago
Closed 9 years ago
#33496 closed defect (bug) (invalid)
Can't override wp_new_user_notification in child theme functions.php
Reported by: | zero12345678 | Owned by: | |
---|---|---|---|
Milestone: | Priority: | normal | |
Severity: | normal | Version: | 4.3 |
Component: | Users | Keywords: | |
Focuses: | administration | Cc: |
Description
I have the following code placed in the functions.php file in my child theme overriding the wp_new_user_notification functions so that is doesn't send an email to new users that are created.
The last wp_mail function is commented out.
The email is still being sent to the new user's email address though.
if ( !function_exists('wp_new_user_notification') ) : function wp_new_user_notification( $user_id, $notify = 'admin' ) { global $wpdb; $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); $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(__('E-mail: %s'), $user->user_email) . "\r\n"; wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration'), $blogname), $message); if ( 'admin' === $notify || 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 ) ); $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"; // DISABLE EMAIL FROM BEING SENT TO NEW USER'S EMAIL ADDRESS //wp_mail($user->user_email, sprintf(__('[%s] Your username and password info'), $blogname), $message); } endif;
Change History (1)
Note: See
TracTickets for help on using
tickets.
Hello zero12345678, welcome to our trac.
A pluggable function like
wp_new_user_notification()
can't be overwritten by a theme. You have to define your function in a plugin which is loaded beforewp-includes/pluggable.php
gets included.For further support please use our Support Forums.