Existe-t-il un point d'accroche qui me permettrait d'envoyer par courrier électronique plusieurs adresses électroniques pour les notifications de courrier électronique par défaut de l'administrateur?
J'espérais pouvoir construire un tableau:
$adminEmails = array('[email protected]', '[email protected]');
Ensuite, tous les courriels de l'administrateur (comme les nouvelles notifications des utilisateurs) sont envoyés à $ adminEmails
Possible?
Essaye ça:
update_option( 'admin_email', '[email protected], [email protected]' );
Notez que la valeur est une chaîne. ouvrir et fermer des citations seulement!
Cela peut être fait en filtrant la fonction wp_mail
, en vérifiant si to
est défini sur le courrier électronique de l'administrateur, et si c'est le cas, ajoutez vos adresses électroniques supplémentaires et renvoyez les arguments à wp_mail
add_filter( 'wp_mail', 'my_custom_to_admin_emails' );
/**
* Filter WP_Mail Function to Add Multiple Admin Emails
*
*
*
* @param array $args A compacted array of wp_mail() arguments, including the "to" email,
* subject, message, headers, and attachments values.
*
* @return array
*/
function my_custom_to_admin_emails( $args ) {
// If to isn't set (who knows why it wouldn't) return args
if( ! isset($args['to']) || empty($args['to']) ) return $args;
// If TO is an array of emails, means it's probably not an admin email
if( is_array( $args['to'] ) ) return $args;
$admin_email = get_option( 'admin_email' );
// Check if admin email found in string, as TO could be formatted like 'Administrator <[email protected]>',
// and if we specifically check if it's just the email, we may miss some admin emails.
if( strpos( $args['to'], $admin_email ) !== FALSE ){
// Set the TO array key equal to the existing admin email, plus any additional emails
//
// All email addresses supplied to wp_mail() as the $to parameter must comply with RFC 2822. Some valid examples:
// [email protected]
// User <[email protected]>
$args['to'] = array( $args['to'], '[email protected]', 'Admin4 <[email protected]>' );
}
return $args;
}
Nous retournons le TO sous forme de tableau, car wp_mail
le manipulera et l'explosera au besoin pour envoyer le courrier électronique.
Voici ma solution, elle utilise le filtre update_option_ *, je pense que c'est la bonne façon de s'y prendre. ajoutez ceci à un plugin ou à votre fichier functions.php de thème, et vous pourrez alors mettre en toute sécurité des emails d'administrateur séparés par des virgules dans les paramètres-> écran général.
add_filter('pre_update_option_admin_email','sanitize_multiple_emails',10,2);
function sanitize_multiple_emails($value,$oldValue)
{
//if anything is fishy, just trust wp to keep on as it would.
if(!isset($_POST["admin_email"]))
return $value;
$result = "";
$emails = explode(",",$_POST["admin_email"]);
foreach($emails as $email)
{
$email = trim($email);
$email = sanitize_email( $email );
//again, something wrong? let wp keep at it.
if(!is_email($email))
return $value;
$result .= $email.",";
}
if(strlen($result == ""))
return $value;
$result = substr($result,0,-1);
return $result;
}