[wp-hackers] Replacing a function in Pluggable.php - wp_new_user_notification

Alex Cragg alex at mysoutham.com
Sat Sep 8 16:44:22 GMT 2007

Hello everyone,

this is my first email to this list, so i apologise if i dont go about 
things correctly.

I have posted this query in the support forums, but havent received any 

I am trying to write my first plugin to replace the email that is sent 
out to new users using the wp_new_user_notification function. I have 
written the plugin using the devlounge series on writing a plugin, and 
it activates fine, and options are saved to the database. at the moment 
i am concentrating on the body of the email until i know more about what 
i am doing, so there is an admin panel where this is defined.

My problem is that the email text i am trying to define isnt being used, 
and i cant find much documentation on wp_new_user_notification or which 
wp function it hooks into. at the moment it is using user_register, but 
i guessed as to whether it is right or not.

the plugin is as follows

if (!class_exists("NewUserEmailSetUp")) {
   class NewUserEmailSetUp {
       var $adminOptionsName = "NewUserEmailSetUpAdminOptions";
       function NewUserEmailSetUp() { //constructor         }
       function init() {
       //Returns an array of admin options
       function getAdminOptions() {
           $emailnewuserAdminOptions = array(
               'newuseremailtext' => '',
               'newuseremailsubject' => '',
               'newuseremailfromaddress' => '');
           $emailOptions = get_option($this->adminOptionsName);
           if (!empty($emailOptions)) {
               foreach ($emailOptions as $key => $option)
                   $emailnewuserAdminOptions[$key] = $option;
update_option($this->adminOptionsName, $emailnewuserAdminOptions);
           return $emailnewuserAdminOptions;
       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')) . "\r\n\r\n";
   $message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
   $message .= sprintf(__('E-mail: %s'), $user_email) . "\r\n";

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

   if ( empty($plaintext_pass) )
   $message  = sprintf(__('Hi %s'), $user_login) . "\r\n";
   $message .= $emailOptions("newuseremailtext") . "\r\n";
   $message .= sprintf(__('Username: %s'), $user_login) . "\r\n";
   $message .= sprintf(__('Password: %s'), $plaintext_pass) . "\r\n";

   wp_mail($user_email, sprintf(__('[%s] Welcome to my test blog'), 
get_option('blogname')), $message);
       //Prints out the admin page
       function printAdminPage() {
                   $emailOptions = $this->getAdminOptions();
(isset($_POST['update_emailnewuserSettings'])) {
                       if (isset($_POST['emailnewuserText'])) {
                           $emailOptions['newuseremailtext'] = 
                       if (isset($_POST['emailnewuserSubject'])) {
                           $emailOptions['newuseremailsubject'] = 
                       }                          if 
(isset($_POST['emailnewuserFromAddress'])) {
                           $emailOptions['newuseremailfromaddress'] = 
update_option($this->adminOptionsName, $emailOptions);
<div class="updated"><p><strong><?php _e("Settings Updated.", 
                   } ?>
<div class=wrap>
<form method="post" action="<?php echo $_SERVER["REQUEST_URI"]; ?>">
<h2>New User Email Set Up</h2>
<h3>Allow Comment Code in the Header?</h3>
<p>Selecting "No" will disable the comment code inserted in the header.</p>
<p><label for="emailnewuserHeader_yes"><input type="radio" 
id="emailnewuserHeader_yes" name="emailnewuserHeader" value="true" <?php 
if ($emailOptions['show_header'] == "true") { _e('checked="checked"', 
"NewUserEmailSetUp"); }?> /> Yes</label>&nbsp;&nbsp;&nbsp;&nbsp;<label 
for="emailnewuserHeader_no"><input type="radio" 
id="emailnewuserHeader_no" name="emailnewuserHeader" value="false" <?php 
if ($emailOptions['show_header'] == "false") { _e('checked="checked"', 
"NewUserEmailSetUp"); }?>/> No</label></p>

<h3>What Subject Would You Like Your Email To Have?</h3>
<textarea name="emailnewuserSubject" style="width: 80%; height: 
100px;"><?php _e($emailOptions['newuseremailsubject'], 
'NewUserEmailSetUp') ?></textarea>

<h3>What Text Would You Like To Have as Your Email Text?</h3>
<textarea name="emailnewuserText" style="width: 80%; height: 
100px;"><?php _e($emailOptions['newuseremailtext'], 'NewUserEmailSetUp') 

<h3>What Address Would You Like to Send Your Email From? (NB you must 
have this email set up as a real email address)</h3>
<textarea name="emailnewuserFromAddress" style="width: 80%; height: 
100px;"><?php _e($emailOptions['newuseremailfromaddress'], 
'NewUserEmailSetUp') ?></textarea>

<div class="submit">
<input type="submit" name="update_emailnewuserSettings" value="<?php 
_e('Update Settings', 'NewUserEmailSetUp') ?>" /></div>
               }//End function printAdminPage()
} //End Class NewUserEmailSetUp

if (class_exists("NewUserEmailSetUp")) {
   $new_useremail = new NewUserEmailSetUp();

//Initialize the admin panel
if (!function_exists("NewUserEmailSetUp_ap")) {
   function NewUserEmailSetUp_ap() {
       global $new_useremail;
       if (!isset($new_useremail)) {
       if (function_exists('add_options_page')) {
   add_options_page('New User Email Set Up', 'New User Email Set Up', 9, 
basename(__FILE__), array(&$new_useremail, 'printAdminPage'));
   }   }

//Actions and Filters   if (isset($new_useremail)) {
   add_action('admin_menu', 'NewUserEmailSetUp_ap');
   add_action('wp_head', array(&$new_useremail, 'addHeaderCode'), 1);
   add_action('activate_mynewplugin.php',  array(&$new_useremail, 'init'));
   add_action('user_register', 'wp_new_user_notification');

any pointer as to what is wrong, or what else is required to get the 
text included in the email will be greatly appreciated, as i'd love to 
be able to release this.


More information about the wp-hackers mailing list