2017-10-14 7 views
0

Est-il possible de modifier le contenu de l'e-mail d'activation envoyé aux utilisateurs lorsqu'ils s'inscrivent pour un compte sur un site WordPress?Modifier l'e-mail d'activation de WordPress

Je cherche à changer le sujet et le corps de l'email pour lire quelque chose d'un peu plus en ligne avec les informations de mon site Web.

J'ai essayé de ajouté ce qui suit dans un plug-in personnalisé trouvé à l'intérieur mu-plugins, mais il semble avoir aucun effet du tout:

<?php 
/* 
Plugin Name: Disable Username and Password Notification 
Description: Disables the Username and Password email 
*/ 
// Start changing email body 
function myprefix_change_activation_email_body ($old_body, $domain, $path, $title, $user, $user_email, $key, $meta) { 
    $my_message = "Hi! This is my new email! "; 
    $my_message .= "Your site {$title} is almost ready. We probably also want to include the activation key: {$key} "; 
    $my_message .= "Activate your site here : http://{$domain}{$path}wp-activate.php?key=$key"; 
    // ... other stuff 
    return $my_message; 
} 
add_filter('wpmu_signup_blog_notification_email', 'myprefix_change_activation_email_body', 10, 8); 
// End changing email body 

// Start changing email subject 
function myprefix_change_activation_email_subject ($old_subject, $domain, $path, $title, $user, $user_email, $key, $meta) { 
    $my_subject = "Hi! You just registered on my site!"; 
    return $my_subject; 
} 
add_filter('wpmu_signup_blog_notification_subject', 'myprefix_change_activation_email_subject', 10, 8); 
// End changing email subject 

D'après ce que je peux dire, le problème est que le filtre être utilisé est le plus probable pour les configurations MultiSite que mon site n'est pas. C'est juste un site WordPress standard.

Vive

+0

L'e-mail d'activation Je fais référence est vient en fait d'un plugin et n'est pas une fonctionnalité WordPress par défaut, donc ma question est hors de propos! – damienoneill2001

Répondre

1

La fonction que vous recherchez est wp_new_user_notification c'est un pluggable function. Les fonctions enfichables sont des fonctions qui vous permettent de remplacer les fonctionnalités de Wordpress Core.

Vous pouvez remplacer, simplement par:

  1. Créez un fichier dans le dossier mu-plugins, vous pouvez appeler ce que vous voulez, mais vous devez donner un nom significatif, comme nouveau-utilisateur notification personnalisée. php
  2. Copie la fonction par défaut et l'encapsule dans une instruction if vérifiant si la fonction n'existe pas. (Il est une meilleure pratique sinon il peut produire des erreurs)
  3. Modifier le message et l'objet (ou tout ce que vous voulez changer)

Exemple:

<?php 
     /* 
     Plugin Name:  Custom User Notification 
     Plugin URI:  http://www.example.com 
     Description:  Pligin description 
     Version:   1.0 
     Author:   Your Name 
     Author URI:  http://www.authorurl.com 
     */ 


     if(!function_exists('wp_new_user_notification')){ 

      function wp_new_user_notification($user_id, $deprecated = null, $notify = '') { 
       if ($deprecated !== null) { 
        _deprecated_argument(__FUNCTION__, '4.3.1'); 
       } 

       global $wpdb, $wp_hasher; 
       $user = get_userdata($user_id); 

       // 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); 

       if ('user' !== $notify) { 
        $switched_locale = switch_to_locale(get_locale()); 
        $message = sprintf(__('New user registration on your site %s:'), $blogname) . "\r\n\r\n"; 
        $message .= sprintf(__('Username: %s'), $user->user_login) . "\r\n\r\n"; 
        $message .= sprintf(__('Email: %s'), $user->user_email) . "\r\n"; 

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

        if ($switched_locale) { 
         restore_previous_locale(); 
        } 
       } 

       // `$deprecated was pre-4.3 `$plaintext_pass`. An empty `$plaintext_pass` didn't sent a user notification. 
       if ('admin' === $notify || (empty($deprecated) && empty($notify))) { 
        return; 
       } 

       // Generate something random for a password reset key. 
       $key = wp_generate_password(20, false); 

       /** This action is documented in wp-login.php */ 
       do_action('retrieve_password_key', $user->user_login, $key); 

       // Now insert the key, hashed, into the DB. 
       if (empty($wp_hasher)) { 
        require_once ABSPATH . WPINC . '/class-phpass.php'; 
        $wp_hasher = new PasswordHash(8, true); 
       } 
       $hashed = time() . ':' . $wp_hasher->HashPassword($key); 
       $wpdb->update($wpdb->users, array('user_activation_key' => $hashed), array('user_login' => $user->user_login)); 

       $switched_locale = switch_to_locale(get_user_locale($user)); 

       $message = sprintf(__('Username: %s'), $user->user_login) . "\r\n\r\n"; 
       $message .= __('To set your password, visit the following address:') . "\r\n\r\n"; 
       $message .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login') . ">\r\n\r\n"; 

       $message .= wp_login_url() . "\r\n"; 

       wp_mail($user->user_email, sprintf(__('[%s] Your username and password info'), $blogname), $message); 

       if ($switched_locale) { 
        restore_previous_locale(); 
       } 
      } 

     } 
+0

Merci pour votre réponse à ce sujet. D'après ce que je peux dire cependant, l'Email d'Activation dont je parle provient en fait d'un Plugin et n'est pas une fonctionnalité WordPress par défaut, donc ma question est vraiment hors de propos! Merci encore pour l'aide cependant. – damienoneill2001