Afisează ID-ul produsului și cheia item-ului din coș
Cum pot afișa ID-ul produsului și product_item_key pentru fiecare item din coș în locul numărului total?
function iconic_cart_count_fragments( $fragments ) {
// Obține conținutul coșului
$cart_items = WC()->cart->get_cart();
$output = '';
// Iterează prin fiecare item din coș
foreach( $cart_items as $item_key => $item ) {
$output .= '<div class="cart-item-details">';
$output .= 'ID produs: ' . $item['product_id'] . ' - ';
$output .= 'Cheie item: ' . $item_key;
$output .= '</div>';
}
$fragments['div.header-cart-count'] = '<div class="header-cart-count">' . $output . '</div>';
return $fragments;
}
Mulțumesc

Techno Deviser, probabil din greșeală, în bucla foreach
a setat valoarea la $fragments['div.header-cart-count']
în loc să o adauge.
Încearcă această modificare:
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;
}
Sau:
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;
}

@JyotiSharma Tocmai am verificat al doilea exemplu din codul de mai sus. Dacă am 2 produse diferite în coș și apăs "adaugă în coș" pentru următorul, indexul div.header-cart-count
din răspunsul JSON are 3 perechi cheie/valoare.

Încearcă ceva de genul acesta
global $woocommerce;
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $cart_item ) {
echo $cart_item_key;
echo $cart_item['product_id'];
}
SAU
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
echo $cart_item_key;
echo $cart_item['product_id'];
}
SAU
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>';
}
Aceasta va afișa ID-urile produselor, în loc de rezultatul tău curent.
Soluția finală funcțională.
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;
}
}

am încercat deja așa, dar după aceea frontend-ul a devenit complet gol.

codul din fișierul 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;
}

care este metoda corectă? scopul meu este să afișez fiecare item_id și item_key din coș după ce se declanșează adăugarea în coș prin ajax pe pagina de categorie/acasă

Îți ofer răspunsul conform întrebării tale, în cadrul funcției tale.

mulțumesc mult, funcționează exact așa cum am nevoie.
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; }
