Wie man usermeta zur E-Mail “Notice of Email Change” hinzufügt

Hoffe, dass jemand helfen kann.

Ich versuche, den Text “Benachrichtigung über EMail-Änderung” in der E-Mail zu ändern, die Sie beim Aktualisieren einer E-Mail-Adresse erhalten.

Hier ist was ich bisher habe

add_filter( 'password_change_email', 'red_change_password_mail_message', 10, 3 ); function red_change_password_mail_message( $pass_change_mail, $user, $userdata ) { $new_message_txt = __( 'Hi [first_name] [last_name], This notice confirms that your email was changed on IBEW Local 353. If you did not change your email, please contact the Site Administrator at support@redsealcreative.com This email has been sent to [user_email] Regards, All at IBEW Local 353' ); $pass_change_mail[ 'message' ] = $new_message_txt; return $pass_change_mail; } 

Wie Sie sehen können, möchte ich die E-Mail-Nachricht mit ihrem Vor- und Nachnamen personalisieren. Was wäre der beste Weg dies zu tun und wäre mir jemand in der Lage, mir ein Beispiel zu geben, um mich anzufangen.

Solutions Collecting From Web of "Wie man usermeta zur E-Mail “Notice of Email Change” hinzufügt"

Der Filter, der verwendet wird, um die E-Mail zu ändern, die an einen Benutzer gesendet wird, wenn er seine E-Mail- Adresse email_change_email lautet email_change_email . Beachten Sie, dass sich dies von password_change_email das Sie in Ihrem ursprünglichen Code verwendet haben. Mit diesem Filter können Sie die E-Mail ändern, die an den Benutzer gesendet wird, wenn sein Kennwort geändert wird.

Diese beiden Filter funktionieren ähnlich, aber es ist wichtig, zwischen beiden zu unterscheiden. Beide Filter erscheinen in wp-includes/user.php .

  • Im folgenden Code verwenden wir die email_change_email , um den Nachrichtentext zu ändern. Die neuen Platzhalter ###FIRST_NAME### und ###LAST_NAME### wurden dem Code (und den Dokumenten) hinzugefügt.

  • Die Standard-Platzhalter, wo immer möglich, im Nachrichtentext, anstatt die Zeichenfolgen fest zu codieren.

  • Außerdem wurde dem benutzerdefinierten Nachrichtentext eine Textdomäne hinzugefügt. Es ist immer eine gute Übung, Zeichenketten eine _e() hinzuzufügen, die an gettext-functionen übergeben werden ( __() , _e() usw.).

 /** * Filters the contents of the email sent when the user's email is changed. * * @param array $email_change_email { * Used to build wp_mail(). * @type string $to The intended recipients. * @type string $subject The subject of the email. * @type string $message The content of the email. * The following strings have a special meaning and will get replaced dynamically: * - ###USERNAME### The current user's username. * - ###FIRST_NAME### The current user's first name. * - ###LAST_NAME### The current user's last name. * - ###ADMIN_EMAIL### The admin email in case this was unexpected. * - ###EMAIL### The old email. * - ###SITENAME### The name of the site. * - ###SITEURL### The URL to the site. * @type string $headers Headers. * } * @param array $user The original user array. * @param array $userdata The updated user array. */ add_filter( 'email_change_email', 'red_email_change_email', 10, 3 ); function red_email_change_email( $email_change_email, $user, $userdata ) { $new_message_txt = __( 'Hi ###FIRST_NAME### ###LAST_NAME###, This notice confirms that your email was changed on ###SITENAME###. If you did not change your email, please contact the Site Administrator at ###ADMIN_EMAIL### This email has been sent to ###EMAIL### Regards, All at ###SITENAME###' ); $email_change_email['message'] = $new_message_txt; $email_change_email['message'] = str_replace( '###FIRST_NAME###', $user['first_name'], $email_change_email['message'] ); $email_change_email['message'] = str_replace( '###LAST_NAME###', $user['last_name'], $email_change_email['message'] ); // Debugging helper. Uncomment to turn on. // update_option( 'wpse_debug_email_change_email_user', $user ); return $email_change_email; } 

Debuggen

Ich habe überprüft, dass dieser Code den Vor- und Nachnamen des Benutzers ausgibt. Diese Informationen stammen aus der Benutzer-Meta-Tabelle, aber sie ist bereits für uns über das $user Array durch den Core eingerichtet. Ich habe alle persönlichen **REMOVED** manuell mit **REMOVED** .

Beispiel E-Mail:

 Hi Dave (first name) Romsey (last name), This notice confirms that your email was changed on WP Theme Testing. If you did not change your email, please contact the Site Administrator at **REMOVED** This email has been sent to **REMOVED** Regards, All at WP Theme Testing 

Hier ist der Inhalt des $user Arrays:

 Array ( [ID] => 1 [user_login] => dave [user_pass] => **REMOVED** [user_nicename] => dave [user_email] => **REMOVED** [user_url] => http://example.com/ [user_registered] => 2016-02-14 05:29:13 [user_activation_key] => [user_status] => 0 [display_name] => dave [first_name] => Dave (first name) [last_name] => Romsey (last name) [nickname] => dave [description] => This is the author's test! test link [rich_editing] => true [comment_shortcuts] => false [admin_color] => fresh [use_ssl] => 0 [show_admin_bar_front] => true [locale] => ) 

Hier ist eine function, die das $user Array in der Konsole des Admin-Bereichs anzeigt, sobald die Debug-Zeile im obigen Code aktiviert wurde.

 /** * Debugging helper. Outputs $user array to console in admin area. * This data is saved via debugging line in red_email_change_email(). */ add_action( 'admin_head', 'wpse_debug_option' ); function wpse_debug_option() { $value = get_option( 'wpse_debug_email_change_email_user' ); echo ''; } 

Sie übergeben bereits ein $user Objekt in Ihre function, daher sollten Sie in $user->first_name und $user->last_name .

$new_message_txt einfach $new_message_txt zu:

 $new_message_txt = __('Hi ' . $user->first_name ' . ' ' . $user->last_name . ', ...(rest of your message) ... ' . $pass_change_mail . '... end of your message');