php - 如何在 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>
';
}
解决方案
要检查订单是否已付款,或获取付款日期时间,您可以使用WC_Order
方法get_date_paid()
。如果订单已付款,此方法可以返回WC_DateTime
Object,否则返回一个null
值。
因此,在您的代码中,您可以包含以下内容:
if( $order->get_date_paid() ) {
// Order is paid - Do something
} else {
// Order is NOT paid - Do something else
}
推荐阅读
- pandas - 如何按自定义区域聚合?
- bash - 如何检查 docker pull 是否真的拉了一些东西
- opendaylight - 使用 yang 生成的 pojos 使用 odl netconf 客户端配置设备
- node-red - 如何将文件上传到 Node-RED
- android - 提供其他应用程序与我的应用程序共享图像并打开/使用它
- elixir - 混合任务产生一个进程什么都不做
- angular - ion-input 类型文件仅适用于 ios,不适用于 android
- python - Keras Sequential 模型与功能 API 的不一致
- angular - Angular HTTP get 中的 Corrs 问题
- java - Impala - 查询 java UDF 产生的数据时产生的错误