Afisează ID-ul produsului și cheia item-ului din coș

30 iul. 2018, 09:17:14
Vizualizări: 13.8K
Voturi: 1

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

0
Toate răspunsurile la întrebare 2
2

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; 
} 
30 iul. 2018 12:57:56
Comentarii

@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.

nmr nmr
30 iul. 2018 21:46:25

da, ai dreptate, mulțumesc! totul funcționează perfect, închid acest subiect acum.

Jyoti Sharma Jyoti Sharma
31 iul. 2018 06:37:39
9

Î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; 
     } 

     } 
30 iul. 2018 11:00:13
Comentarii

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

Jyoti Sharma Jyoti Sharma
30 iul. 2018 11:22:10

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;

}

Jyoti Sharma Jyoti Sharma
30 iul. 2018 11:22:39

Greșești în abordare

Techno Deviser Techno Deviser
30 iul. 2018 11:23:58

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ă

Jyoti Sharma Jyoti Sharma
30 iul. 2018 11:27:26

Încearcă soluția din ultimul pas

Techno Deviser Techno Deviser
30 iul. 2018 11:40:16

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

Techno Deviser Techno Deviser
30 iul. 2018 11:42:10

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; }

Jyoti Sharma Jyoti Sharma
30 iul. 2018 12:18:31

Nicio problemă. Am marcat ca răspuns.

Techno Deviser Techno Deviser
30 iul. 2018 12:28:44

mersi, dar îmi pare rău, afișează doar valoarea unui singur produs chiar dacă sunt multe în coș vreau să afișez toate ID-urile produselor și cheile itemilor din coș

Jyoti Sharma Jyoti Sharma
30 iul. 2018 12:40:44
Arată celelalte 4 comentarii