web-dev-qa-db-fra.com

Email tous les abonnés quand je fais une action

J'ai créé cette fonction:

function email_subscribed_users($event)
{
    $users = get_users('role=subscriber');

    foreach ($users as $user) {
        $accepted = get_user_meta($user->ID, 'accepted', true);
        if ($accepted) {
            wp_mail($recipients, $event->event_title, $event->event_desc, 'From: <[email protected]>');
        }
    }
}

Mais il faut beaucoup de temps pour envoyer les emails en sachant que le nombre d'utilisateurs augmentera avec le temps. Quelle fonction dois-je utiliser pour envoyer les emails efficacement ou existe-t-il un plugin de newsletter pour le faire?

1
Antonio Papa

Vous pouvez directement interroger des utilisateurs ayant une valeur user_meta spécifique. Cela permettra d’obtenir des performances en chargeant d’abord tous les utilisateurs, puis en les itérant, puis en chargeant la meta_value.

Jetez un coup d'œil à la classe WP_User_Query .


Si nous parlons d'un plus grand nombre de mails, il vaudra peut-être mieux utiliser un plugin complet pour les newsletters (qui mettra automatiquement les mails en file d'attente et ne tentera pas de les envoyer tous en même temps). Et si vous envoyez vraiment beaucoup de mails (comme +5.000 dans une newsletter), je vous conseillerais de faire appel à un fournisseur de service de messagerie externe (CakeMail, Mailchimp ...).

2
s1lv3r