add_action( 'woocommerce_thankyou', 'orderReceived' );
function orderReceived($order_id)
{
    $order = wc_get_order($order_id);

    if (!$order->has_status('failed') && did_action('woocommerce_thankyou') === 1) {
        addPoints(1000, 'add', 'order');
    }
}

我如何才能确保上面的函数在WooCommerce感谢页面上只触发一次?

每次我重新加载感谢页面时,它都会触发.这意味着一个人可以得到无限的积分.

推荐答案

您可以使用订单元数据来判断是否已经添加了点.

试试这个代码:-

$points_check = $order->get_meta('_points_added');

If($points_check != 'added'){
$order->update_meta_data( '_points_added', 'added' );
 $order->save();
addPoints(1000, 'add', 'order');
}

Php相关问答推荐

p a/a/p的x路径 Select ,但不是p somethext a链接/a或某些文本/p>

在WooCommerce管理订单页面中显示区域名称

在php中有没有办法比较两个包含相同枚举类型的枚举数组

如何将对我的域的请求重定向到子文件夹中的索引,同时保留域URL并使用.htaccess?

使用列入黑名单的单词和自定义业务逻辑的组合将特定的子字符串包装在HTML标记中

如何确保所有语言文件都使用Laravel中的新密钥进行更新?

为什么本地主机(Xampp)上的laravel运行速度比普通html站点慢?

在PHP中,如何将介于0和1之间(包括0和1)的浮点概率转换为数组索引?

FlySystem v3:使用本地适配器时出现问题

根据WooCommerce Cart小计阈值自动应用优惠券

如何将WooCommerce产品从一个产品复制到另一个产品S

无法在Laravel中将日志(log)通道设置为空

使用DOMPDF获取PDF格式的本 map 像

在WooCommercel邮箱通知上添加来自Apaczka插件的选定交付点

NetBeans 不显示中文内容

使用 GROUP_CONCAT 规范化/转置来自查询的数据

Symfony 自定义注销

我想更新表格中的结果并将它们发布到浏览器,但它不起作用

标头内容类型:image/jpeg 无效

如何将文件直接上传到 Cloudinary 而不先保存在 public 文件夹中