首页 > 解决方案 > 如何在 WooCommerce 中检查订单是否已支付

问题描述

我需要在订单详细信息中显示这是新客户或回头客的信息。为此,我检查具有当前 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>
    ';
}

标签: phpwordpresswoocommercehook-woocommerceorders

解决方案


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

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

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

推荐阅读