我正在使用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'并检查它,但不确定如何去做或者有更好的方法。
答案 0 :(得分:1)
您添加新字段的想法会奏效。
另一种选择是仅向那些将在23-30天内过期的人发送电子邮件,假设该作业每周运行一次。
或者每天运行它,并检查仅在30天内到期。