我在会员和订阅扩展中使用了woo-commerce。我试图显示当前用户订阅的到期日期,我需要订阅密钥才能访问它。
要找到这个键,我需要product_id和order_id(因为这两个值构成了键,例如#34; 254_119")。但是,当我尝试使用
访问当前用户订单时$order = new WC_Order(ID);
print_r($order);
订单数据为空,我在尝试访问数据库中的user_meta时才意识到它只包含送货信息等。
是否可以访问当前用户的最新订单?我读过我可能需要使用
get_posts()
但我不确定访问我需要的数据的参数。
这似乎也无效。
$customer_orders = get_posts($order_count);
答案 0 :(得分:1)
如果我理解你的问题,那么方法应该是:
获取当前用户的最近订单。
/*Get most recent order of customer*/
$recent_orders = get_posts( array(
'numberposts' => 1,
'meta_key' => '_customer_user',
'meta_value' => get_current_user_id(), //Current user's id
'post_type' => wc_get_order_types(),
'post_status' => array_keys( wc_get_order_statuses() ),
) );
现在我们有最近的订单,我们可以从该订单中获取 order_id
。
$order_id = $recent_orders[0]->ID; //Order Id
现在要获得该订单的产品,我们可以执行以下操作:
$order = new WC_Order($order_id);
$cart_item = $order->get_items();//Get Cart Items of that order
现在我们同时拥有 product_id
和 order_id
,因此我们可以制作密钥:
foreach($cart_item as $item){
echo "Product Name : ".$item['name'];
echo "<br>";
echo "Product Id : ".$item['product_id'];
echo "<br>";
echo "Your Key ".$order_id."_".$item['product_id'];
echo "<br>";
}
所有代码在一起:
<?php
/*Get most recent order of customer*/
$recent_orders = get_posts( array(
'numberposts' => 1,
'meta_key' => '_customer_user',
'meta_value' => get_current_user_id(), //Current user's id
'post_type' => wc_get_order_types(),
'post_status' => array_keys( wc_get_order_statuses() ),
) );
$order_id = $recent_orders[0]->ID; //Order Id
$order = new WC_Order($order_id);
$cart_item = $order->get_items();//Get Cart Items of that order
foreach($cart_item as $item){
echo "Product Name : ".$item['name'];
echo "<br>";
echo "Product Id : ".$item['product_id'];
echo "<br>";
echo "Your Key ".$order_id."_".$item['product_id'];
echo "<br>";
}
?>
如果您有任何疑问,请告诉我。