2016-12-08 4 views
3

Я пытаюсь получить имена упорядоченных продуктов через файл functions.php с помощью цикла. Heres мой код:Получить название заказа в Woocommerce

global $woocommerce; 
$items = $woocommerce->cart->get_cart(); 

foreach($items as $item => $values) { 
    $_product = $values['data']->post; 
} 

И тогда я называю название так:

$_product->post_title 

Это работает, он возвращает мне название продукта, который я заказал. Дело в том, что когда у меня есть 2 или более продукта, он все равно возвращает мне 1 имя. Как я могу это сделать, чтобы он возвращал все имена в тележке.

+0

Вы проверяете название внутри цикла foreach? Это не ясно в вашем примере. – Steeve

+0

сейчас что вам нужно сделать дальше ?? –

+0

Я думаю, что это решено –

ответ

1

Новый синтаксис в WooCommerce относительно корзину горничной с WC() без необходимости вызова global woocommerce;

Так что ваш код будет это:

$products_in_cart= array(); 
$products_post_title_in_cart = array(); 
$products_ids_in_cart= array(); 

foreach(WC()->cart->get_cart() as $cart_item) { 
    $products_in_cart[] = $cart_item['data']->post; 
    $products_post_title_in_cart[] = $cart_item['data']->post->post_title; 
    $products_ids_in_cart[] = $cart_item['product_id']; 
} 

// The first product (or item of the cart) 
$_product = $products_in_cart[0]; // product post data 
$product_id = $products_ids_in_cart[0]; // product ID 
$products_post_title_in_cart[0] // product post title 

// The Second product (or item of the cart) 
$_product = $products_in_cart[1]; // product post data 
$product_id = $products_ids_in_cart[1]; // product ID 
$products_post_title_in_cart[1] // product post title 

// etc … for all other products you increase the key of the arrays to get the correct values 
+0

Спасибо за ответ. Я - промежуточный уровень. –

+0

@VasimVanzara Я все равно не отвечаю вам ... это не имеет никакого отношения к уровню ... Каждый может ответить без соображений уровня или нет? – LoicTheAztec

+0

Когда я добавляю 2 товара в корзину, он возвращает только 1 продукт –

1
<?php 
    global $woocommerce; 
    $items = $woocommerce->cart->get_cart(); 
    $arr_product=array(); 
     foreach($items as $item => $values) {    
      $arr_product[]= $_product->post_title;    
     } 
    print_r($arr_product,true); // echo print_r(); thats why get 1 
?> 
+0

Здравствуйте, спасибо за ваш ответ , Но мне нужно вызвать $ _product ['my_post'] -> post_title; вне цикла for –

+0

проверьте обновленный код –

+0

Он по-прежнему возвращает 1 имя элемента, если я добавляю 2, возвращает 1 –

0

Попробуйте это code, возвращает все имена в корзине.

global $woocommerce; 

$cart_item = $woocommerce->cart->get_cart(); 

echo "<pre>"; 
print_r($cart_item); 

exit(); 
Смежные вопросы