2016-06-10 7 views
0

Я хочу получить категорию предметов в корзине при оформлении заказа в 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

Вы можете попробовать сначала с вашим подходом "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'); 

Update - Поразмыслив:

Вы не можете получить заказ Id для ` 'post_type' => 'shop_order', потому что он еще не существует. Этот идентификатор заказа создается, когда клиент отправляет заказ, но не раньше на странице проверки.
Так что в этом случае нормально получить пустой массив.

+0

Привет, извините за поздний ответ, и не работают для меня. Я только использую первый бит кода в начале и пытаюсь получить дамп var. Обе свалки var представляют собой пустые массивы. Любой совет? Я куплю вам текилу, если мы сможем это сделать :) –

+0

Да, я тоже это пробовал. Только первая часть без цикла. Просто пустой массив. –

+0

Просто для помощи это то, что я читал в другом месте, это не просто работает для меня. –