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

Callum Macdonald lists.automattic.com at callum-macdonald.com
Sun Sep 9 16:36:34 GMT 2007


Hey Alex,

I think the problem is a PHP issue. You've defined the function 
wp_new_user_notification() as a method of the class NewUserEmailSetUp. I 
think if you move the function definition outside the class, and wrap it 
in a if(!function_exists('wp_new_user_notification')) { }, then it 
should work.

I've attached what I mean, I think it should work, but I haven't tested it.

Cheers,


Callum.

Alex Cragg wrote:
> 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 replies.
>
> 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() {
>           $this->getAdminOptions();
>       }
>       //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) )
>       return;
>   $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();
>                                                         if 
> (isset($_POST['update_emailnewuserSettings'])) {
>                       if (isset($_POST['emailnewuserText'])) {
>                           $emailOptions['newuseremailtext'] = 
> $_POST['emailnewuserText'];
>                       }
>                       if (isset($_POST['emailnewuserSubject'])) {
>                           $emailOptions['newuseremailsubject'] = 
> $_POST['emailnewuserSubject'];
>                       }                          if 
> (isset($_POST['emailnewuserFromAddress'])) {
>                           $emailOptions['newuseremailfromaddress'] = 
> $_POST['emailnewuserFromAddress'];
>                       }                          
> update_option($this->adminOptionsName, $emailOptions);
>                                             ?>
> <div class="updated"><p><strong><?php _e("Settings Updated.", 
> "NewUserEmailSetUp");?></strong></p></div>
>                   <?php
>                   } ?>
> <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') ?></textarea>
>
> <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>
> </form>
> </div>
>                   <?php
>               }//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)) {
>           return;
>       }
>       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)) {
>   //Actions
>   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');
>   //Filters
> }
>
> 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.
>
> thanks
> Alex
>
> _______________________________________________
> wp-hackers mailing list
> wp-hackers at lists.automattic.com
> http://lists.automattic.com/mailman/listinfo/wp-hackers
>
>



More information about the wp-hackers mailing list