无法找到客户订单和产品ID

时间:2015-11-24 09:18:17

标签: php wordpress woocommerce

我在会员和订阅扩展中使用了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);

1 个答案:

答案 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>";
    }
?>

如果您有任何疑问,请告诉我。