当前位置: 首页 > 知识库问答 >
问题:

Woocommerce:付款完成后更改订单id

阮昊阳
2023-03-14

我用woocommerce做了一个简单的网店,有三种付款方式。理想情况下,可通过直接银行转账和开户。订单ID是根据付款方式创建的。例如,如果使用iDEAL付款,订单id将变为ID190100;如果以账户付款,订单id将变为RK190100。我从BeRocket的插件“WooCommerce的顺序订单号”中得到了这一点,但这些都是在付款完成之前创建的。订单ID必须在付款后才能最终确定。现在,尚未付款且可能尚未付款的订单将收到一个固定的订单ID。因此,是否可以创建一个临时订单ID,并在订单完成时根据付款方式更改订单ID?

共有2个答案

颜修明
2023-03-14

试试这个。这是一个很快的例子。希望能有所帮助。

add_action( 'woocommerce_order_status_completed', 'wc_change_order_id' );

function wc_change_order_id( $order_id ) {

    $order = wc_get_order( $order_id );

    $method = $order->get_payment_method(); // need check this

    if ( $method === 'account' ) {

        $number = 'ID' . $order->get_id();

        $order->set_id( $number );

        $order->save();

    }
}
毛成济
2023-03-14

默认情况下,Woocommerce将使用订单的post ID作为订单ID。这在查看WC\u order::get\u order\u number()方法时很明显。如果要使用自定义订单号来显示,则需要在woocommerce\u order\u number上添加一个过滤器以加载不同的值。

一个示例脚本是:

add_action( 'woocommerce_order_status_completed', 'wc_change_order_id' );

function wc_change_order_id( $order_id ) {

    $order = wc_get_order( $order_id );

    $method = $order->get_payment_method(); // need check this

    if ( $method === 'account' ) {

        $number = 'ID' . $order->get_id();

        $order->update_meta_data('_new_order_number', $number );

    }
}
add_filter('woocommerce_order_number', function($default_order_number, \WC_Order $order) {
   //Load in our meta value. Return it, if it's not empty.
   $order_number = $order->get_meta('_new_order_number');
   if(!empty($order_number)) {
      return $order_number;
   }
   // use whatever the previous value was, if a plugin modified it already.
   return $default_order_number;
},10,2);
 类似资料:
  • 问题内容: 通常,wooCommerce应该自动完成虚拟产品的订单。但是事实并非如此,这是一个实际的问题,即使是BUG之类的。 因此,在这一点上,您可以找到一些有用的东西(但不是很方便): 1)一段代码 (您可以在wooCommerce文档中找到): 但是此代码段不适用于 BACS , 货到付款 和 支票* 付款方式。Paypal和信用卡网关的付款方式都可以。 BACS 是直接银行转帐付款方式 还

  • 我WooCommerce,我正在使用“更改管理付款状态返回到WoocommercePending order status unpayed for WoocommercePending”答案代码,当订单状态在后端手动更改为pending时,重置订单的已付款状态。 例如,如果订单状态从“完成”更改为“挂起”,则删除以下内容:“支付日期为4月2日,2019年@5:29 PM” 现在我这里的问题是在订单

  • 我正在使用WooCommerce预订,客户可以要求预订,需要得到管理员的确认。如果管理员不确认预订,我希望订单在24小时后自动取消。 从更改伍兹商务订单状态后X时间已通过回答代码,我正在寻找任何协助,以满足我的要求,使用WP cron。

  • 我使用WooCommerce通过电话/电子邮件等手动接受订单,我使用后端记录订单,手动添加订单。 目前,当生成“待付款”的订单作为状态时,库存会自动减少/扣减。我不希望这种情况发生。理想情况下,我只想减少库存,当订单被标记为“正在处理”,然后付款,然后采取。 我明白这是如何WooCommerce工作回来,有没有一种方法来避免库存减少,直到某一个状态已经被选中? 我已经在functions.php中

  • 我想自动完成刚刚成功支付订单“完成”状态。我在Stack和Google上搜索了很多,找到了这个答案代码: Woocommerce:Auto complete Payed Orders(取决于支付方式) 但问题是,代码将所有下订单标记为“完成”状态,而不取决于订单是否成功下订单。 我需要在代码中更改什么,以便将只支付的订单自动转换为“已完成”状态?

  • 我的paypal按钮有一个小问题默认情况下,我会尝试隐藏它以显示我自己的按钮:/ 这是我的密码。js }); 问题是,我总是有黄色的贝宝按钮,出现在我的按钮底部,我不能得到面具。