如何在cron作业重复的函数中仅向用户发送一次电子邮件

时间:2017-02-09 20:42:06

标签: php wordpress email cron

我正在使用WP CRON每周检查一下使用此内容将在30天后过期的用户

global $wpdb;

$daysPriorToRebill = 30;
$priorToRebillDate = date('Y-m-d', strtotime("+{$daysPriorToRebill} days"));
$todaydate = date('Y-m-d');   


    $sql3 = "SELECT DISTINCT wp_user_id
    FROM mm_user_data
    WHERE expiration_date <= '".$priorToRebillDate."' AND expiration_date >= '".$todaydate."'";
$userid = $wpdb->get_results($sql3);
$user_id =  $userids->wp_user_id;

在找到这些用户后,我发送了一封电子邮件,其中包含付款链接,一旦付款,我还有其他功能可以按年度延长会员资格

    $from_email = get_option('admin_email');

       $to = $user_email;

        $subject = "Hey update your membership;;

        $headers = "";

        $headers .= "From:" . $from_email . "\r\n";

        $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

        $message = "Message with link";



        wp_mail($to, $subject, $message, $headers);
如果他们在一周内付款,他们将不会收到下一封电子邮件,但如果他们需要更长时间,他们将不得不再次接收此电子邮件,是否有办法排除已在下一个cron作业中收到该电子邮件的用户。我正在考虑在数据库字段中插入一个特定值,例如'sent'并检查它,但不确定如何去做或者有更好的方法。

1 个答案:

答案 0 :(得分:1)

您添加新字段的想法会奏效。

另一种选择是仅向那些将在23-30天内过期的人发送电子邮件,假设该作业每周运行一次。

或者每天运行它,并检查仅在30天内到期。