web-dev-qa-db-fra.com

Qu'est-ce qui ne va pas avec la personnalisation du nouveau courrier électronique de notification d'utilisateur par add_filter?

Lorsqu'un nouvel utilisateur s'inscrit, l'email de confirmation est reçu et voici ce qu'il dit:

Username: testuser To set your password, visit the following address:  

Mais je veux le personnaliser, alors j'ai ajouté le code suivant au functions.php
mais ça ne marche pas !!! et toujours l'email par défaut sera envoyé !!!
J'utilise 4.9.9 wordpress

<?php
add_filter( 'wp_new_user_notification_email', 'custom_wp_new_user_notification_email', 10, 3 );

function custom_wp_new_user_notification_email( $wp_new_user_notification_email, $user, $blogname ) {

$wp_new_user_notification_email['subject'] = sprintf(__( '[%s] Your username and password' ), $blogname, $user->user_login );

$key = get_password_reset_key( $user );
$message = sprintf(__('Welcome to our website,')) . "\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 .= "After this you can enjoy our website!" . "\r\n\r\n";
$message .= "Kind regards," . "\r\n";
$message .= "Support Team" . "\r\n";
$wp_new_user_notification_email['message'] = $message;

$wp_new_user_notification_email['headers'] = 'From: MyName<[email protected]>'; 
// this just changes the sender name and email to whatever you want (instead of the default WordPress <[email protected]>

return $wp_new_user_notification_email;
}
?>

pourquoi le code ne fonctionne pas? voulez-vous me aider?

1
Sh.Dehnavi

En réalité, le code que vous avez n’est pas faux (je l’ai testé comme vous l’avez indiqué ci-dessus et il fonctionne très bien).

Mais vous devez tenir compte de quelques possibilités supplémentaires:

  1. La fonction wp_new_user_notification() est une fonction enfichable. Donc, il peut être remplacé par un plugin ou par un code personnalisé. Et si elle est remplacée, il est possible que la version personnalisée de la fonction ne contienne pas le crochet de filtre wp_new_user_notification_email.
  2. Il est possible qu'un autre filtre existe déjà sur ce même filtre, mais à une priorité antérieure (<10) et qu'il redirige ou quitte le processus. Ce serait une mauvaise forme, mais c'est possible. Ce n’est pas le problème, mais c’est possible, c’est pourquoi je le mentionne.
  3. La possibilité existe que vous visiez la mauvaise fonction. Nous supposons que l'e-mail est l'enregistrement par défaut WP, mais vous ne l'avez pas précisé. Si vous effectuez une opération nécessitant un enregistrement personnalisé et/ou un autre processus, elle ne passe pas nécessairement par wp_new_user_notification().

Avec ces possibilités, je vous recommande de procéder comme suit:

  1. Passez en revue votre thème pour vous assurer qu'il s'agit de la seule instance d'un filtre wp_new_user_notification_email.
  2. Désactiver TOUS les plugins.
  3. Re-testez avec tous les plugins désactivés.
1
butlerblog