繁体   English   中英

如何在 Woocommerce 中获取客户的最后一个订单

[英]How to get the last order of a customer in Woocommerce

我正在使用如何在 Woocommerce 中获取最新订单 ID ”的答案代码,该代码使用自定义函数get_last_order_id()返回最后一个订单。

这是我获取订单项的代码尝试:

<?php

    $latest_order_id = get_last_order_id(); // Last order ID
    $order = wc_get_order( $latest_order_id ); // Get an instance of the WC_Order object
    $order_details = $order->get_data(); // Get the order data in an array
    $order_status = esc_html( wc_get_order_status_name( $order->get_status() ) );
    $order_items = $order_details['line_items'];
?>

然后我在这段代码中使用它:

<div class="row last-order">
    <div class="col-md-7">
      <ul>
        <?php
        foreach ($order_items as $product_name) { ?>
          <li><?php echo $product_name['name']; ?></li>
        <?php
        }
        ?>
      </ul>
    </div>
    <div class="col-md-4 order-status-box">
      <h6 class="status"><?php echo $order_status; ?></h6>
      <i class="fas fa-chevron-down icon"></i>
    </div>
</div>

我想获得当前客户的最后一个订单。 如何更改自定义函数get_last_order_id()以获取当前客户的最后一个订单?

除了当前用户的最新订单外,我还想收到我的购物车中的内容。

更新:用new WC_Customer( get_current_user_id() );替换WC()->customer new WC_Customer( get_current_user_id() ); 为了更好的兼容性。

WC_Customer类包含get_last_order()方法来获取客户的最后一个订单(因此您不再需要来自此答案线程的自定义函数get_last_order_id()

所以你的代码将是:

<?php

    // For logged in users only
    if ( is_user_logged_in() ) :

    $user_id = get_current_user_id(); // The current user ID

    // Get the WC_Customer instance Object for the current user
    $customer = new WC_Customer( $user_id );

    // Get the last WC_Order Object instance from current customer
    $last_order = $customer->get_last_order();

    $order_id     = $last_order->get_id(); // Get the order id
    $order_data   = $last_order->get_data(); // Get the order unprotected data in an array
    $order_status = $last_order->get_status(); // Get the order status
?>

<div class="row last-order">
    <div class="col-md-7">
        <ul>
        <?php foreach ( $last_order->get_items() as $item ) : ?>
            <li><?php echo $item->get_name(); ?></li>
        <?php endforeach; ?>
      </ul>
    </div>
    <div class="col-md-4 order-status-box">
      <h6 class="status"><?php echo esc_html( wc_get_order_status_name( $order_status ) ); ?></h6>
      <i class="fas fa-chevron-down icon"></i>
    </div>
</div>

<?php endif; ?>

测试和工作。

注意:现在要“除了当前用户的最新订单外,还接收购物车的内容” ,您将不得不提出一个包含更多详细信息的新问题,请一次提出一个问题。

有关的:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM