我想从订单中获取所有产品,并且我需要在 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 号,没有任何其他信息。
可以通过什么方式使用订单中的产品?
谢谢
这不起作用,因为您的
$items
不是经典的元素数组,而是包含您需要使用 get_data()
方法正确获取的受保护值。
这是一个应该适合您的用例的单行代码:
$items = json_encode( array_map( function($item){ return $item->get_data(); }, $order->get_items() ) );
信用:LoicTheAztec