如何在 WooCommerce 中检查订单是否已付款

时间:2021-02-23 10:17:40

标签: php wordpress woocommerce hook-woocommerce orders

我需要在订单详细信息中显示这是新客户或回头客的信息。为此,我检查具有当前 id 的客户是否已完成订单,如果超过 2 个,则他是回头客。我还需要显示有关当前客户已完成订单数量的信息。对于管理员来说,一切都显示正确,但是如果我在商店经理的角色下查看,则会看到不正确的信息。在我看来,付款时间需要再添加一张支票,如果时间为NULL,则说明该订单尚未完成。 这是我的代码,请帮我添加付款时间的支票

 add_filter( 'woocommerce_admin_order_data_after_order_details', 'renderCustomerIsNewField' );

 function renderCustomerIsNewField($order){
    $customer_has_existing_orders  = wc_get_orders(
        array(
            'customer_id' => $order->get_user_id(),
            'status' => 'completed'
        )
    );

    $orders_count = count($customer_has_existing_orders);

    $markData = ( (int)count($customer_has_existing_orders) >= 2)
        ? array('status-processing', 'Returning customer')
        : array('status-on-hold', 'New Customer');
    
    echo '
    <p>
        <mark class="order-status '. $markData[0] .'">
            <span>'. $markData[1] .' <strong style="color:#ff0000;font-weight: 900;"> '. $orders_count .'</strong></span>
        </mark>
    </p>
    ';
}

1 个答案:

答案 0 :(得分:1)

要检查订单是否已付款,或获取付款日期时间,您可以使用 WC_Order method get_date_paid()。如果订单已付款,此方法可以返回 WC_DateTime 对象,否则返回 null 值。

因此在您的代码中,您可以包含以下内容:

if( $order->get_date_paid() ) {
    // Order is paid - Do something
} else {
    // Order is NOT paid - Do something else
}