web-dev-qa-db-ja.com

アクションを実行したら、すべての購読者に電子メールを送ります

私はこの関数を作りました:

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]>');
        }
    }
}

しかし、それはユーザーが時間がたつにつれて増加することを知っている電子メールを送ることに多くの時間を必要とします。私は電子メールを効率的に送るのにどの機能を使うべきですか、またはこれをするニュースレタープラグインがありますか?

1
Antonio Papa

特定のuser_meta値を持つユーザーを直接照会できます。これにより、最初にすべてのユーザーをロードし、次にそれらのユーザーを反復処理し、その後meta_valueをロードするよりもパフォーマンスが向上します。

WP_User_Query クラスを見てください。


大量のメールについて話している場合は、本格的なニュースレタープラグインを使用することをお勧めします(自動的にメールをキューに入れ、それらを一度に送信しようとしないでください)。そして、あなたが本当にたくさんのメールを送っているのであれば(1つのニュースレターで+5.000のように)、私はあなたに外部のメールサービスプロバイダー(CakeMail、Mailchimp ...)を使うように勧めます。

2
s1lv3r