您可以使用meta创建一次性操作
像这样的
$order_id = $order->get_id();
if (get_post_meta($order_id, \'is_mail_sent\', true)) return;
update_post_meta($order_id, \'is_mail_sent\', true);
在打开
if
块
此代码将首先检查is_mail_sent
为true,如果为true,它将从函数返回(退出)。
如果第一次不是真的,那么它将继续执行代码的其余部分,并设置is_mail_sent
为true以防止将来发送邮件
你也可以这样做
$order_id = $order->get_id();
if($now>$last_time && !get_post_meta($order_id, \'is_mail_sent\', true)) {
update_post_meta($order_id, \'is_mail_sent\', true);
$order_number = $order->get_order_number();
$to = \'[email protected]\';
$subject = \'Failed order \';
$body = \'#\'.$order_number. \' order number failed;
$headers = array(\'Content-Type: text/html; charset=UTF-8\');
wp_mail( $to, $subject, $body, $headers );
}
这将执行相同的检查,但仅包装代码的邮件部分