Вывод ID товара и product_item_key в корзине

30 июл. 2018 г., 09:17:14
Просмотры: 13.8K
Голосов: 1

Как я могу вывести ID товара и product_item_key для каждого элемента корзины вместо общего количества?

function iconic_cart_count_fragments( $fragments ) {

    $fragments['div.header-cart-count'] = '<div class="header-cart-count">' . WC()->cart->get_cart_contents_count() . '</div>';

    return $fragments;

} 

Спасибо

0
Все ответы на вопрос 2
2

Techno Deviser, вероятно по ошибке, в цикле foreach установил значение для $fragments['div.header-cart-count'] вместо его добавления.

Попробуйте эту модификацию:

function iconic_cart_count_fragments( $fragments ) {

     foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { 
        $fragments['div.header-cart-count'] .= '<div class="header-cart-count">' .$cart_item_key.'<br><br>'. $cart_item['product_id']. '</div>'; 
     } 
     return $fragments; 
} 

Или:

function iconic_cart_count_fragments( $fragments ) {

     $cart = WC()->cart->get_cart();
     if (!empty($cart)) {
         foreach ( $cart as $cart_item_key => $cart_item )
            $output .= $cart_item_key. ' - ' . $cart_item['product_id'] . '<br>';
         $fragments['div.header-cart-count'] = '<div class="header-cart-count">' . $output . '</div>'; 
     }
     return $fragments; 
} 
30 июл. 2018 г. 12:57:56
Комментарии

@JyotiSharma Я проверил второй пример из кода выше. Если у меня в корзине 2 разных товара, и я нажимаю "добавить в корзину" на следующем, то div.header-cart-count индекс в JSON-ответе содержит 3 пары ключ/значение.

nmr nmr
30 июл. 2018 г. 21:46:25

да, ты права, спасибо! всё работает отлично, я закрываю эту тему сейчас.

Jyoti Sharma Jyoti Sharma
31 июл. 2018 г. 06:37:39
9

Попробуйте что-то вроде этого:

global $woocommerce;
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $cart_item ) {

echo $cart_item_key;
echo $cart_item['product_id'];
}

ИЛИ

foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
echo $cart_item_key;
echo $cart_item['product_id'];
}

ИЛИ

    foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
 $fragments['div.header-cart-count'] = '<div class="header-cart-count">' .$cart_item['product_id']. '</div>'; 
 }

Это даст вам ID продуктов вместо вашего текущего вывода.

Финальное рабочее решение:

 global $woocommerce; 
 add_filter( 'woocommerce_add_to_cart_fragments', 'iconic_cart_count_fragments', 10, 1 ); 
 function iconic_cart_count_fragments( $fragments ) {
     foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { 
     $fragments['div.header-cart-count'] = '<div class="header-cart-count">' .$cart_item_key.'<br><br>'. $cart_item['product_id']. '</div>'; 
     return $fragments; 
     } 

     } 
30 июл. 2018 г. 11:00:13
Комментарии

Я уже пробовал так, но после этого фронтенд полностью становится пустым.

Jyoti Sharma Jyoti Sharma
30 июл. 2018 г. 11:22:10

Код файла function.php add_filter( 'woocommerce_add_to_cart_fragments', 'iconic_cart_count_fragments', 10, 1 );

function iconic_cart_count_fragments( $fragments ) {

$fragments['div.header-cart-count'] = '<div class="header-cart-count">' . foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {

echo $cart_item_key; echo $cart_item['product_id']; } . '</div>';

return $fragments;

}

Jyoti Sharma Jyoti Sharma
30 июл. 2018 г. 11:22:39

Вы делаете неправильно

Techno Deviser Techno Deviser
30 июл. 2018 г. 11:23:58

какой правильный способ? моя цель — отображать каждый item_id и item_key корзины после срабатывания ajax добавления в корзину на странице категории/главной

Jyoti Sharma Jyoti Sharma
30 июл. 2018 г. 11:27:26

Попробуйте решение из последнего шага

Techno Deviser Techno Deviser
30 июл. 2018 г. 11:40:16

Я просто даю ответ в соответствии с вашим вопросом, внутри вашей функции.

Techno Deviser Techno Deviser
30 июл. 2018 г. 11:42:10

огромное спасибо, это работает именно так, как я хотел.

global $woocommerce; add_filter( 'woocommerce_add_to_cart_fragments', 'iconic_cart_count_fragments', 10, 1 );

function iconic_cart_count_fragments( $fragments ) { foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { $fragments['div.header-cart-count'] = '<div class="header-cart-count">' .$cart_item_key.'<br><br>'. $cart_item['product_id']. '</div>';

} return $fragments; }

Jyoti Sharma Jyoti Sharma
30 июл. 2018 г. 12:18:31

Не переживайте. Пометил как ответ

Techno Deviser Techno Deviser
30 июл. 2018 г. 12:28:44

спасибо, но, к сожалению, отображается только значение одного товара, даже если их много в корзине я хочу отображать все ID товаров и ключи элементов в корзине

Jyoti Sharma Jyoti Sharma
30 июл. 2018 г. 12:40:44
Показать остальные 4 комментариев