Jos*_*dum 1 php wordpress checkout woocommerce hook-woocommerce
我想在 WooCommerce 结账时获取购物车中商品的类别。我想提取它,然后将其放置在我的自定义结帐中的字段中。
我正在使用WooCommerce MultiStep Checkout Wizard高级插件和特定的挂钩:
add_action('woocommerce_multistep_checkout_before_order_info', 'destinationStep');
Run Code Online (Sandbox Code Playgroud)
我有点迷失了,找不到太多我需要用来获取它的 文档。
我试图让项目出现,但我只得到一个空数组。
$order = new WC_Order( $order_id );
$items = $order->get_items();
var_dump($items);
Run Code Online (Sandbox Code Playgroud)
您可以先尝试使用您的方法“ 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);
Run Code Online (Sandbox Code Playgroud)
如果仍然不起作用,请尝试使用“ 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');
Run Code Online (Sandbox Code Playgroud)
更新-经过一番思考:
您无法获取“post_type”=>“shop_order”的订单 ID,因为它尚不存在。该订单 ID 在客户提交订单时生成,但在结账页面之前不会生成。
所以在这种情况下,得到一个空数组是正常的。