WooCommerce防止重复订单

您所在位置:

有时,客户不小心提交了两次相同的订单,或者 WooCommerce 支付网关出现临时问题或插件冲突。

这可能导致重复收费、退款、扣款、管理成本和糟糕的用户体验。

通过检查同一客户是否在过去 2 分钟内下了相同的已付款订单,我们可以阻止第二次尝试,并显示帮助信息。

如果你也遇到过类似的情况,或者想主动预防,这里有一个快速代码段,你可以添加到你的网站,以避免重复的 WooCommerce 订单。

WooCommerce: 防止重复订单 (1)
WooCommerce: 防止重复订单 (1)

PHP 码段: 如果相同订单在 <2 钟前提交则返回错误 @ WooCommerce Checkout

此代码段使用 woocommerce_checkout_process 与 WooCommerce 结账流程挂钩。目的是防止客户在短时间内意外下达重复订单。

在该函数中,我们首先定义一组参数来查询最近的订单。我们会使用当前结账的账单电子邮件($_POST[‘billing_email’]),查找同一客户最多下过的一个订单(‘limit’ => 1)。

我们还会检查订单是否在最近 2 分钟内创建。我们使用’date_created’ => ‘>’ . ( time() – 2 * MINUTE_IN_SECONDS ) 进行检查,这样就能过滤掉较早的订单。

接下来,我们使用 wc_get_is_paid_statuses(),只考虑已付款状态的订单。这样可以确保我们不会与失败或挂起的订单进行比较。

然后,我们将当前购物车的总金额与订单总金额进行匹配(‘total’ => WC()->cart->get_total( ‘edit’ ) ),以确认这是一个相同的订单。

最后,‘return’ => ‘ids’ 参数只检索订单 ID,从而提高了查询效率。

如果找到匹配的订单,我们会使用 wc_add_notice() 阻止结账并显示错误信息,建议客户等待后再重试。

add_action( 'woocommerce_checkout_process', 'bb_prevent_duplicate_orders' );
 
function bb_prevent_duplicate_orders() {
    $args = [
        'limit' => 1,
        'customer' => $_POST['billing_email'],
        'date_created' => '>' . ( time() - 2 * MINUTE_IN_SECONDS ),
        'status' => wc_get_is_paid_statuses(),
        'total' => WC()->cart->get_total( 'edit' ),
        'return' => 'ids',
    ];
    $orders = wc_get_orders( $args );
    if ( $orders ) {
      wc_add_notice( __( 'It looks like you already placed this order recently. Please wait a minute before trying again.' ), 'error' );
    }
}

在哪里添加自定义代码?

您应将自定义 PHP 代码放在子主题的 functions.php 中,将自定义 CSS 代码放在 style.css 中。

除非您另有报告,否则这些代码仍然有效。要排除冲突,请暂时切换到 Storefront 主题,禁用除 WooCommerce 以外的所有插件,然后再次测试该代码段.

在领英上分享这篇文章
本篇文章内容
    Add a header to begin generating the table of contents

    联系我们

    郑州白帽子网络科技有限公司是一家专业做外贸网站建设,谷歌SEO优化、谷歌SEM推广公司。
    郑州白帽子网络科技微信图
    添加请说明需求
    郑州白帽子

    郑州白帽子

    郑州白帽子是一家提供外贸网站定制和白帽谷歌SEO优化的公司,我们会不定期的分享关于外贸的一些知识,以及如何进行外贸建站和谷歌SEO优化推广。我们的核心价值观是给客户提供价值,通过我们专业的服务让客户获得更多的询盘!了解更多关于外贸、外贸建站谷歌SEO优化推广的细节,欢迎联系我们!

    发表评论

    您的邮箱地址不会被公开。 必填项已用 * 标注

    更多文章
    可视化面板有哪些
    外贸建站

    为什么不建议使用不带cpanel面板的服务器

    服务器是独立站的一个基础,因为涉及到网站安全,谷歌SEO优化等,服务器这方面是不能省的。你可能听别人说过,一个网站的服务器费用一年也就只有几百块钱,为什么你推荐的服务器需要这么贵?这篇文章我们就来聊下这个事。

    Rank Math SEO插件无法保存关键词
    谷歌SEO排名优化

    Rank Math SEO插件无法保存关键词

    如果你的独立站使用的Rank Math的SEO插件,发现设置了核心关键词,但是在保存或者Publish以后发现关键词消失了,并没有保存。如果出现这个问题,可以按这个文章介绍的流程解决。

    Titok广告规范2025
    谷歌SEM

    Titok广告规范2025

    TikTok的广告功能正在不断发展,凭借全球近20亿用户,它已成为营销人员最佳选择之一。本文将详细介绍2025年TikTok广告的主要规格…

    滚动至顶部

    登陆

    注册