【发布时间】:2021-10-26 19:00:15
【问题描述】:
当客户选择特定交付选项和特定付款时,我遇到了一些问题。目前我们正在使用 bacs 和本地支付网关方法来收款,我们有本地取货和快递选项。此外,对于每个交付选项,我们都有 woocommerce 的自定义状态。当有人要求快递,他想用 bacs 付款时,就会出现问题。我们尝试为每个组合分配自定义状态,但代码不起作用,因为它为代码中的每个选项选择了相同的自定义状态。
add_action( 'woocommerce_thankyou', 'express_shipping_update_order_status', 10, 1 );
function express_shipping_update_order_status( $order_id ) {
if ( ! $order_id ) return;
$search_rm = 'Despacho Express Todo Santiago (Excluye Padre Hurtado. Recibe al siguiente día hábil)';
$search_estoril = 'Retiro en Tienda Estoril';
$search_vina = 'Retiro en Tienda Reñaca';
$order = wc_get_order( $order_id );
$payment_method=$order->get_payment_method();
foreach($order->get_shipping_methods() as $shipping_item ){
if( strpos( $shipping_item->get_method_title(), $search_rm ) !== false && $payment_method == "bacs"){
$order->update_status('check-payment');
break;
} else {
$order->update_status('express-rm');
break;
}
if( strpos( $shipping_item->get_method_title(), $search_estoril ) !== false && $payment_method == "bacs"){
$order->update_status('check-payment');
break;
} else {
$order->update_status('retiro-rm');
break;
}
if( strpos( $shipping_item->get_method_title(), $search_vina ) !== false && $payment_method == "bacs"){
$order->update_status('check-payment');
break;
} else {
$order->update_status('retiro-vina');
break;
}
}
}
这是结果:
有什么办法可以解决这个问题吗?谢谢!
【问题讨论】:
-
您使用的是
foreach($order->get_shipping_methods()。一个订单可以包含多少种不同的运输方式? -
我们有 3 种不同的送货方式和 2 种本地取货(针对不同的商店),但它们都在送货方式列表中。
标签: php woocommerce