如何在结账时从WooCommerce获取订单中的类别?

时间:2016-06-10 05:47:18

标签: php wordpress woocommerce checkout hook-woocommerce

我想在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);

1 个答案:

答案 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,但在结帐页面之前不会生成   所以在这种情况下,得到一个空数组是正常的。