我不喜欢使用插件,所以我使用了user registration
自定义注册页面,不发送任何电子邮件。
起初一切正常。然后,我添加了一些功能来更改“发件人”和“电子邮件”,使用wp_mail_from
, 这很有效。然后我决定通过在wp_new_user_notification
. 然后它就不再发送任何电子邮件了。
以下是整个模板代码:
`
<?php require_once(ABSPATH . WPINC . \'/registration.php\');
/* Check if users can register. */
$registration = get_option( \'users_can_register\' );
/* If user registered, input info. */
if ( \'POST\' == $_SERVER[\'REQUEST_METHOD\'] && !empty( $_POST[\'action\'] ) && $_POST[\'action\'] == \'adduser\' ) {
$user_pass = wp_generate_password();
$userdata = array(
\'user_pass\' => $user_pass,
\'user_login\' => esc_attr( $_POST[\'user_name\'] ),
\'first_name\' => esc_attr( $_POST[\'first_name\'] ),
\'last_name\' => esc_attr( $_POST[\'last_name\'] ),
\'user_email\' => esc_attr( $_POST[\'email\'] ),
);
function make_blog_name_from_name($name) {
return \'RNA Administrator\';
}
add_filter(\'wp_mail_from_name\', \'make_blog_name_from_name\');
function from_mail($content_type){
return \'[email protected]\';
}
add_filter(\'wp_mail_from\',\'from_mail\');
if ( !$userdata[\'user_login\'] )
$error = __(\'A username is required for registration.\', \'frontendprofile\');
elseif ( username_exists($userdata[\'user_login\']) )
$error = __(\'Sorry, that username already exists!\', \'frontendprofile\');
elseif ( !is_email($userdata[\'user_email\'], true) )
$error = __(\'You must enter a valid email address.\', \'frontendprofile\');
elseif ( email_exists($userdata[\'user_email\']) )
$error = __(\'Sorry, that email address is already used!\', \'frontendprofile\');
else{
$new_user = wp_insert_user( $userdata );
if ( !function_exists(\'wp_new_user_notification\') ) {
function wp_new_user_notification($user_id, $plaintext_pass){
$new_user = new WP_User($user_id);
$user_login = stripslashes($user->user_login);
$user_email = stripslashes($user->user_email);
// 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_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\'), $blogname), $message);
if ( empty($plaintext_pass) )
return;
$message = sprintf(__(\'Username: %s\'), $user_login) . "\\r\\n";
$message .= sprintf(__(\'Password: %s\'), $plaintext_pass) . "\\r\\n";
$message .= "Thank you";
wp_mail($user_email, sprintf(__(\'[%s] Your username and password\'), $blogname), $message);
}
}
}
}
// calling the header.php
get_header();?>
<div id="container">
<div id="content">
<div class="entry-content">
</div>
<!-- REGISTER FORM STARTS HERE -->
<?php if ( is_user_logged_in() && !current_user_can( \'create_users\' ) ) : ?>
<p class="log-in-out alert">
<?php printf( __(\'You are logged in as <a href="%1$s" title="%2$s">%2$s</a>. You don\\\'t need another account.\', \'frontendprofile\'), get_author_posts_url( $curauth->ID ), $user_identity ); ?> <a href="<?php echo wp_logout_url( get_permalink() ); ?>" title="<?php _e(\'Log out of this account\', \'frontendprofile\'); ?>"><?php _e(\'Logout »\', \'frontendprofile\'); ?></a>
</p><!-- .log-in-out .alert -->
<?php elseif ( $new_user ) : ?>
<p class="alert">
<?php
if ( current_user_can( \'create_users\' ) )
printf( __(\'A user account for %1$s has been created.\', \'frontendprofile\'), $_POST[\'user-name\'] );
else
printf( __(\'Thank you for registering, %1$s.\', \'frontendprofile\'), $_POST[\'user-name\'] );
printf( __(\'<br/>Please check your email address. That\\\'s where you\\\'ll recieve your login password.<br/> (It might go into your spam folder)\', \'frontendprofile\') );
?>
</p><!-- .alert -->
<?php else : ?>
<?php if ( $error ) : ?>
<p class="error">
<?php echo $error; ?>
</p><!-- .error -->
<?php endif; ?>
<?php if ( current_user_can( \'create_users\' ) && $registration ) : ?>
<p class="alert">
<?php _e(\'Users can register themselves or you can manually create users here.\', \'frontendprofile\'); ?>
</p><!-- .alert -->
<?php elseif ( current_user_can( \'create_users\' ) ) : ?>
<p class="alert">
<?php _e(\'Users cannot currently register themselves, but you can manually create users here.\', \'frontendprofile\'); ?>
</p><!-- .alert -->
<?php endif; ?>
<?php if ( $registration || current_user_can( \'create_users\' ) ) : ?>
<form method="post" id="adduser" class="user-forms" action="http://<?php echo $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\']; ?>">
<strong>Name</strong>
<p class="form-username">
<label for="user_name"><?php _e(\'Username (required)\', \'frontendprofile\'); ?></label>
<input class="text-input" name="user_name" type="text" id="user_name" value="<?php if ( $error ) echo wp_specialchars( $_POST[\'user_name\'], 1 ); ?>" />
</p><!-- .form-username -->
<p class="first_name">
<label for="first_name"><?php _e(\'First Name\', \'frontendprofile\'); ?></label>
<input class="text-input" name="first_name" type="text" id="first_name" value="<?php if ( $error ) echo wp_specialchars( $_POST[\'first_name\'], 1 ); ?>" />
</p><!-- .first_name -->
<p class="last_name">
<label for="last_name"><?php _e(\'Last Name\', \'frontendprofile\'); ?></label>
<input class="text-input" name="last_name" type="text" id="last_name" value="<?php if ( $error ) echo wp_specialchars( $_POST[\'last_name\'], 1 ); ?>" />
</p><!-- .last_name -->
<strong>Contact Info</strong>
<p class="form-email">
<label for="email"><?php _e(\'E-mail (required)\', \'frontendprofile\'); ?></label>
<input class="text-input" name="email" type="text" id="email" value="<?php if ( $error ) echo wp_specialchars( $_POST[\'email\'], 1 ); ?>" />
</p><!-- .form-email -->
<p class="form-submit">
<?php echo $referer; ?>
<input name="adduser" type="submit" id="addusersub" class="submit button" value="<?php if ( current_user_can( \'create_users\' ) ) _e(\'Add User\', \'frontendprofile\'); else _e(\'Register\', \'frontendprofile\'); ?>" />
<?php wp_nonce_field( \'add-user\' ) ?>
<input name="action" type="hidden" id="action" value="adduser" />
</p><!-- .form-submit -->
</form><!-- #adduser -->
<?php endif; ?>
<?php endif; ?>
<!-- REGISTER FORM ENDS HERE -->`
SO网友:Joshua Abenazer
请尝试此代码。我已经从代码中删除了wp\\u new\\u user\\u通知函数的新声明,因为只有将其放入插件中时,它才会考虑新函数。这就是优先考虑的方式。
<?php
/* Check if users can register. */
$registration = get_option( \'users_can_register\' );
/* If user registered, input info. */
if ( \'POST\' == $_SERVER[\'REQUEST_METHOD\'] && !empty( $_POST[\'action\'] ) && $_POST[\'action\'] == \'adduser\' ) {
$user_pass = wp_generate_password();
$userdata = array(
\'user_pass\' => $user_pass,
\'user_login\' => esc_attr( $_POST[\'user_name\'] ),
\'first_name\' => esc_attr( $_POST[\'first_name\'] ),
\'last_name\' => esc_attr( $_POST[\'last_name\'] ),
\'user_email\' => esc_attr( $_POST[\'email\'] ),
);
function make_blog_name_from_name($name) {
return \'RNA Administrator\';
}
add_filter(\'wp_mail_from_name\', \'make_blog_name_from_name\');
function from_mail($content_type){
return \'[email protected]\';
}
add_filter(\'wp_mail_from\',\'from_mail\');
if ( !$userdata[\'user_login\'] )
$error = __(\'A username is required for registration.\', \'frontendprofile\');
elseif ( username_exists($userdata[\'user_login\']) )
$error = __(\'Sorry, that username already exists!\', \'frontendprofile\');
elseif ( !is_email($userdata[\'user_email\']) )
$error = __(\'You must enter a valid email address.\', \'frontendprofile\');
elseif ( email_exists($userdata[\'user_email\']) )
$error = __(\'Sorry, that email address is already used!\', \'frontendprofile\');
else{
$new_user = wp_insert_user( $userdata );
wp_new_user_notification($new_user, $user_pass);
}
}
// calling the header.php
get_header();?>
<div id="container">
<div id="content">
<div class="entry-content">
</div>
<!-- REGISTER FORM STARTS HERE -->
<?php if ( is_user_logged_in() && !current_user_can( \'create_users\' ) ) : ?>
<p class="log-in-out alert">
<?php printf( __(\'You are logged in as <a href="%1$s" title="%2$s">%2$s</a>. You don\\\'t need another account.\', \'frontendprofile\'), get_author_posts_url( $curauth->ID ), $user_identity ); ?> <a href="<?php echo wp_logout_url( get_permalink() ); ?>" title="<?php _e(\'Log out of this account\', \'frontendprofile\'); ?>"><?php _e(\'Logout »\', \'frontendprofile\'); ?></a>
</p><!-- .log-in-out .alert -->
<?php elseif ( @$new_user ) : ?>
<p class="alert">
<?php
if ( current_user_can( \'create_users\' ) )
printf( __(\'A user account for %1$s has been created.\', \'frontendprofile\'), $_POST[\'user_name\'] );
else
printf( __(\'Thank you for registering, %1$s.\', \'frontendprofile\'), $_POST[\'user-name\'] );
printf( __(\'<br/>Please check your email address. That\\\'s where you\\\'ll recieve your login password.<br/> (It might go into your spam folder)\', \'frontendprofile\') );
?>
</p><!-- .alert -->
<?php else : ?>
<?php if ( $error ) : ?>
<p class="error">
<?php echo $error; ?>
</p><!-- .error -->
<?php endif; ?>
<?php if ( current_user_can( \'create_users\' ) && $registration ) : ?>
<p class="alert">
<?php _e(\'Users can register themselves or you can manually create users here.\', \'frontendprofile\'); ?>
</p><!-- .alert -->
<?php elseif ( current_user_can( \'create_users\' ) ) : ?>
<p class="alert">
<?php _e(\'Users cannot currently register themselves, but you can manually create users here.\', \'frontendprofile\'); ?>
</p><!-- .alert -->
<?php endif; ?>
<?php if ( $registration || current_user_can( \'create_users\' ) ) : ?>
<form method="post" id="adduser" class="user-forms" action="http://<?php echo $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\']; ?>">
<strong>Name</strong>
<p class="form-username">
<label for="user_name"><?php _e(\'Username (required)\', \'frontendprofile\'); ?></label>
<input class="text-input" name="user_name" type="text" id="user_name" value="<?php if ( $error ) echo wp_specialchars( $_POST[\'user_name\'], 1 ); ?>" />
</p><!-- .form-username -->
<p class="first_name">
<label for="first_name"><?php _e(\'First Name\', \'frontendprofile\'); ?></label>
<input class="text-input" name="first_name" type="text" id="first_name" value="<?php if ( $error ) echo wp_specialchars( $_POST[\'first_name\'], 1 ); ?>" />
</p><!-- .first_name -->
<p class="last_name">
<label for="last_name"><?php _e(\'Last Name\', \'frontendprofile\'); ?></label>
<input class="text-input" name="last_name" type="text" id="last_name" value="<?php if ( $error ) echo wp_specialchars( $_POST[\'last_name\'], 1 ); ?>" />
</p><!-- .last_name -->
<strong>Contact Info</strong>
<p class="form-email">
<label for="email"><?php _e(\'E-mail (required)\', \'frontendprofile\'); ?></label>
<input class="text-input" name="email" type="text" id="email" value="<?php if ( $error ) echo wp_specialchars( $_POST[\'email\'], 1 ); ?>" />
</p><!-- .form-email -->
<p class="form-submit">
<input name="adduser" type="submit" id="addusersub" class="submit button" value="<?php if ( current_user_can( \'create_users\' ) ) _e(\'Add User\', \'frontendprofile\'); else _e(\'Register\', \'frontendprofile\'); ?>" />
<?php wp_nonce_field( \'add-user\' ) ?>
<input name="action" type="hidden" id="action" value="adduser" />
</p><!-- .form-submit -->
</form><!-- #adduser -->
<?php endif; ?>
<?php endif; ?>