[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> <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