wordpress 获取客户订单计数排除故障- WooCommerce

roejwanj  于 2023-10-17  发布在  WordPress
关注(0)|答案(2)|浏览(163)

我使用if ( wc_get_customer_order_count( get_current_user_id() ) != 0 ){来检查客户是否以前订购过。如果他们没有,我申请在购物车的第一个订单折扣.
然而,也有一些情况下,一个新客户的订单将失败(主要是由于缺乏资金)。然后,当他们尝试重新订购时,折扣不会应用,因为“wc_get_customer_order_count”包括失败的订单。
使用此功能时,是否有排除失败订单的方法?

2ul0zpep

2ul0zpep1#

您可以通过检查订单的“后状态”来获取任何类型的用户订单,如下所示:

// specify the type of order you need. (delete any item that you dont need)
$order_status = array('wc-pending', 'wc-processing', 'wc-on-hold', 'wc-completed', 'wc-cancelled', 'wc-refunded', 'wc-failed');
$user_orders= wc_get_orders( array(
    'meta_key' => '_customer_user',
    'meta_value' => $current_user->ID,
    'post_status' => $order_status,
    'numberposts' => -1,
) );

然后检查结果并做一些事情...

if (!empty($user_orders)){
     //your code
    }
e5nqia27

e5nqia272#

这就是我如何找到一种方法来做到这一点,即使其他插件添加了新的状态类型:

$order_statuses = wc_get_order_statuses();
$order_statuses = array_diff_key($order_statuses, array(
    'wc-failed'     => '',
    // add any other statuses you want to exclude (you just need the key)
    )
);

$query_args = array(
    'limit'         => -1, // to retrieve all
    'customer_id'   => 12, // or use 'customer' => '[email protected]'
    'status'        => array_keys($order_statuses) // use only the keys
);

$orders = wc_get_orders($query_args);

这将为您提供该客户的所有订单,而不包括失败的订单。

相关问题