Woocommerce 函数 get_items() 返回空数组

问题描述 投票:0回答:1

我想从订单中获取所有产品,并且我需要在 JS 脚本中处理此产品列表。

我在 function.php 中有类似的东西:

add_action( 'wp_head', 'function_after_order' );
function function_after_order() {
    if ( ! is_wc_endpoint_url('order-received') ) return;
    global $wp;

    // If order_id is defined
    if ( isset($wp->query_vars['order-received']) && absint($wp->query_vars['order-received']) > 0 ) :

    $order_id = absint($wp->query_vars['order-received']); // The order ID
    $order = wc_get_order($order_id ); // The order object
    $items = json_encode($order->get_items());
    ?>
      
    <script type="text/javascript">
        console.log(<?php echo $order ?>);
        console.log(<?php echo $items ?>);
    </script>
    <?php
    endif;
}

$order
漂亮地显示整个对象,但
$items
显示一个空对象
{37: {…}}
带有产品 ID 号,没有任何其他信息。

可以通过什么方式使用订单中的产品?

谢谢

php woocommerce hook-woocommerce
1个回答
1
投票

这不起作用,因为您的

$items
不是经典的元素数组,而是包含您需要使用
get_data()
方法正确获取的受保护值。

这是一个应该适合您的用例的单行代码:

$items = json_encode( array_map( function($item){ return $item->get_data(); }, $order->get_items() ) );

信用:LoicTheAztec

© www.soinside.com 2019 - 2024. All rights reserved.