我想在WooCommerce的结帐时获取购物车中商品的类别。我想提取它然后将它放在我的自定义结帐中的字段中。
我正在使用WooCommerce MultiStep Checkout Wizard高级插件和specific hook:
add_action('woocommerce_multistep_checkout_before_order_info', 'destinationStep');
我有点迷失,找不到documentation因为我需要用它来获得它。
我正试图让项目出现,但我只是得到一个空数组。
$order = new WC_Order( $order_id );
$items = $order->get_items();
var_dump($items);
答案 0 :(得分:3)
您可以先尝试使用您的方法" new WC_Order( $order_id );
" ,这样:
function destinationStep( $order_id )
global $woocommerce;
$order = new WC_Order( $order_id );
$items = $order->get_items();
// echo var_dump($items);
//----
foreach ($items as $key => $item) {
$product_name = $item['name'];
$product_id = $item['product_id'];
$terms = get_the_terms( $product_id, 'product_cat' );
// echo var_dump($terms);
foreach ( $terms as $term ) {
// Categories by slug
$product_cat_slug= $term->slug;
}
}
add_action('woocommerce_multistep_checkout_before_order_info', 'destinationStep', 10, 1);
如果仍然无法使用" new WC_Order($post->ID)
" 方法:
function destinationStep()
global $woocommerce, $post;
$order = new WC_Order($post->ID);
$items = $order->get_items();
// echo var_dump($items);
//----
foreach ($items as $key => $item) {
$product_name = $item['name'];
$product_id = $item['product_id'];
$terms = get_the_terms( $product_id, 'product_cat' );
// echo var_dump($terms);
foreach ( $terms as $term ) {
// Categories by slug
$product_cat_slug= $term->slug;
}
}
add_action('woocommerce_multistep_checkout_before_order_info', 'destinationStep');
更新 - 经过一番思考:
您无法获得“' post_type'的订单ID => ' shop_order',因为它还没有存在。客户提交订单时会生成此订单ID,但在结帐页面之前不会生成 所以在这种情况下,得到一个空数组是正常的。