[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
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
More information about the wp-hackers
mailing list