我试图让woocommerce中的用户保留所有产品的价格(即用户已下订单但尚未付款)。
我有以下代码可以检测用户的所有产品未结订单
function get_user_on_hold_product_price() {
global $product, $woocommerce;
// GET USER
$current_user = wp_get_current_user();
// GET USER ON-HOLD ORDERS
$customer_orders = get_posts( array(
'numberposts' => -1,
'meta_key' => '_customer_user',
'meta_value' => $current_user->ID,
'post_type' => 'shop_order',
'post_status' => 'wc-on-hold',
) );
我不确定从这里开始怎么做才能仅获得用户所有保留订单的总价。
像这样在短代码中添加/挂钩此功能;
add_shortcode('get_on-hold_price', 'get_user_on_hold_product_price')
谢谢
答案 0 :(得分:1)
要使用 WC_Order_Query
来获得客户“保留”订单的总数,以提高可用性和兼容性:
add_shortcode('user_on_hold_total', 'get_user_orders_on_hold_total');
function get_user_orders_on_hold_total() {
$total_amount = 0; // Initializing
// Get current user
if( $user = wp_get_current_user() ){
// Get 'on-hold' customer ORDERS
$on_hold_orders = wc_get_orders( array(
'limit' => -1,
'customer_id' => $user->ID,
'status' => 'on-hold',
) );
foreach( $on_hold_orders as $order) {
$total_amount += $order->get_total();
}
}
return $total_amount;
}
代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。
要获取格式化的总金额,请将return $total_amount;
替换为return wc_price($total_amount);
简码用法:
[user_on_hold_total]