gpt4 book ai didi

wordpress - 如果用户返回使用,如何在处理中添加订单?

转载 作者:行者123 更新时间:2023-12-03 17:09:47 25 4
gpt4 key购买 nike

我一直在 Woocommerce 中使用“货到付款”付款方式,并在 Woocommerce 中添加了自定义订单状态“COD”。如果用户选择了“COD”付款选项,我一直在使用以下代码将订单移至“COD”。

add_filter( 'woocommerce_cod_process_payment_order_status', 'change_cod_payment_order_status', 10, 2 );
function change_cod_payment_order_status( $order_status, $order ) {
return 'cod';
}

最佳答案

如果我理解您的问题,您想将订单状态设置为处理,如果用户是退货客户。
让我们假设返回的客户意味着用户已经从您那里购买了东西。

function is_order_has_shipping_product( $order_id ) {
if( ! $order_id ) return;
$order = wc_get_order( $order_id );
$items = $order->get_items(); // Get All The Order Items
$found = false;

foreach ( $items as $item ) {

$product_id = $item->get_product_id(); // Get The Item Product ID
$product = wc_get_product($product_id);
$is_virtual = $product->is_virtual();


if(!$is_virtual) {
$found = true;
break; // If not virtual then stop the loop
}
}


return $found ;

}
上述函数将检查订单是否有虚拟产品以外的任何产品。
    function is_returning_customer($user_id = null) {

if( !$user_id ){
$user_id = get_current_user_id();
}

// Get all customer orders
$customer_orders = get_posts( array(
'numberposts' => -1,
'meta_key' => '_customer_user',
'meta_value' => $user_id,
'post_type' => 'shop_order', // WC orders post type
'post_status' => 'wc-completed', // Only orders with status "completed"
'fields' => 'ids'
) );

$is_returning_customer = false;
if( count( $customer_orders ) > 0){

foreach($customer_orders as $order_id){

$has_shipping_product = is_order_has_shipping_product( $order_id );
if($has_shipping_product){
$is_returning_customer = true;
break;
}

}
}
return $is_returning_customer;
}
所以我们可以使用上面的函数来判断返回状态。如果您有任何逻辑,您可以更改逻辑。
所以现在进入状态变化。
add_filter( 'woocommerce_cod_process_payment_order_status', 'change_cod_payment_order_status', 10, 2 );
function change_cod_payment_order_status( $order_status, $order ) {

$user_id = $order->get_user_id();
$is_returning_customer = is_returning_customer($user_id);

if($is_returning_customer){
return 'processing';
}

return 'cod';
}

关于wordpress - 如果用户返回使用,如何在处理中添加订单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65540474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com