Kosár: szerkesztés és megjelenés
Kiegészítők szerkesztése a kosárból, szülőtermék megtartása, mezők és értékek elrejtése vagy átformázása a kosárban.
Ez a fejezet azt mutatja meg, hogyan működnek a kiegészítő mezők a kosárban: a vásárló utólag módosíthatja a választásait, és te szabályozhatod, mit lát a kosár és a pénztár. A kódrészleteket a sablon functions.php fájljába vagy egy kódrészlet-kezelő bővítménybe tedd.
Kiegészítők szerkesztése a kosárból
Szekció neve “Kiegészítők szerkesztése a kosárból”Alapból a vásárlónak ki kell vennie a terméket a kosárból, ha meggondolja magát egy kiegészítő mezőben. A szerkesztés bekapcsolásával a kosárból visszaléphet a termékoldalra.
- Nyisd meg a WooCommerce → Beállítások → Termékkiegészítők oldalt.
- Az Általános fülön, a Fejlesztések résznél jelöld be a Kosárszerkesztés bekapcsolása négyzetet.
- Mentsd a beállításokat.
Ettől kezdve a kosárban a terméknév mellett megjelenik az Opciók szerkesztése hivatkozás.

A képen a termék neve után látod a hivatkozást, alatta a kiválasztott kiegészítőket.
A hivatkozásra kattintva a vásárló visszakerül a termékoldalra, ahol a korábbi választásai már be vannak állítva. A módosítás után a Termék frissítése gombra kattint, és a kosár sora az új értékekkel frissül.

A képen a mezők a kosárba tett értékekkel töltődnek be, a gomb felirata pedig Termék frissítése.
A hivatkozás szövegének átírása
Szekció neve “A hivatkozás szövegének átírása”Az Opciók szerkesztése szöveget a pewc_after_cart_item_edit_options_text szűrővel cserélheted. A szűrő megkapja a termék azonosítóját is, így termékenként más szöveget adhatsz.
function pelda_szerkesztes_hivatkozas( $szoveg, $termek_id ) { return 'Választások módosítása';}add_filter( 'pewc_after_cart_item_edit_options_text', 'pelda_szerkesztes_hivatkozas', 10, 2 );A szülőtermék megtartása a kosárban
Szekció neve “A szülőtermék megtartása a kosárban”Ha egy termék kiegészítője másik termék (altermék), alapból az altermék kivétele a kosárból a szülőtermékét is kiveszi. Ha azt szeretnéd, hogy a szülőtermék a kosárban maradjon, két módon érheted el:
- Jelöld be a Szülőtermék megtartása beállítást a WooCommerce → Beállítások → Termékkiegészítők oldal Termékek fülén.
- Vagy használd a
pewc_do_not_remove_parentsszűrőt:
add_filter( 'pewc_do_not_remove_parents', '__return_true' );Mezőtípusok elrejtése a kosárban és a pénztárban
Szekció neve “Mezőtípusok elrejtése a kosárban és a pénztárban”Egyes mezőtípusok, például a számítás vagy a szám, csak a háttérszámításhoz kellenek, a vásárlónak nincs rájuk szüksége a kosárban. A pewc_hidden_field_types_in_cart szűrő a megadott típusú mezőket kihagyja a kosár és a pénztár kiegészítő-listájából.
function pelda_rejtett_mezotipusok_a_kosarban( $mezotipusok ) { return array( 'calculation', 'number' );}add_filter( 'pewc_hidden_field_types_in_cart', 'pelda_rejtett_mezotipusok_a_kosarban' );A függvény a visszaadott tömbbel felülírja a bejövőt, ezért minden elrejtendő típust sorolj fel benne. A függvénynevet cseréld egyedire, hogy ne ütközzön más kóddal. A rendelés adatai közül ugyanígy rejthetsz mezőtípusokat, erről a Rendelések: kiegészítők kezelése fejezet szól.
Számítás értékének elrejtése, csak az ár marad
Szekció neve “Számítás értékének elrejtése, csak az ár marad”Ha egy számítás mező árat ad, a kosárban a nyers értéke is megjelenik a termék adatai között. Ha csak az árat szeretnéd mutatni, üresre állíthatod a számítás mezők megjelenített értékét a pewc_filter_item_value_in_cart szűrővel:
function pelda_szamitas_erteke_rejtve( $ertek, $elem ) { if ( isset( $elem['type'] ) && 'calculation' === $elem['type'] ) { $ertek = ''; } return $ertek;}add_filter( 'pewc_filter_item_value_in_cart', 'pelda_szamitas_erteke_rejtve', 10, 2 );A szűrő minden számítás mezőre hat, így egyes mezőket nem tudsz külön kivenni belőle, hacsak a függvényben a mező azonosítóját is nem vizsgálod. Ha a mezőt a kosárból teljesen el akarod tüntetni, az előző pontban leírt típus-elrejtés egyszerűbb.
Szám mező értékének megjelenítése árként
Szekció neve “Szám mező értékének megjelenítése árként”A szám mező értékét a kosárban alapból sima számként látod. Ha az érték valójában pénzösszeg, formázhatod a WooCommerce árformátumával (wc_price()), így a kosárban például „1 500 Ft” látszik. Ehhez is a pewc_filter_item_value_in_cart szűrő kell, a mező azonosítójának és típusának vizsgálatával:
function pelda_szam_mezo_ar_formatumban( $ertek, $elem ) { if ( isset( $elem['field_id'] ) && 1047 === (int) $elem['field_id'] && 'number' === $elem['type'] ) { $ertek = wc_price( $ertek ); } return $ertek;}add_filter( 'pewc_filter_item_value_in_cart', 'pelda_szam_mezo_ar_formatumban', 10, 2 );Az 1047 helyére a saját szám meződ azonosítóját írd. Az azonosítót a mező szerkesztőjében látod. A függvény csak ezt az egy mezőt érinti.
Feltöltött képek bélyegképei a kosárban és a rendelésben
Szekció neve “Feltöltött képek bélyegképei a kosárban és a rendelésben”Ha a vásárló képet tölt fel, a kosárban és a rendelés oldalán a kép kicsinyített változata is megjelenik. Ha csak a fájl hivatkozását szeretnéd mutatni, két szűrővel kapcsolhatod ki a bélyegképet:
// Csak hivatkozás a kosárban, kép nélküladd_filter( 'pewc_show_link_only_cart', '__return_true' );
// Bélyegkép nélkül a rendelés oldalánadd_filter( 'pewc_remove_thumbs_in_order_page', '__return_true' );A két sort külön is használhatod: ha csak az elsőt adod meg, a kosárban hivatkozás lesz, a rendelésben viszont marad a bélyegkép.
Szállítási osztály módosítása egy kiegészítő alapján
Szekció neve “Szállítási osztály módosítása egy kiegészítő alapján”Ha egy kiegészítő mező kitöltése más szállítási díjat igényel (például a csomagolt termék nagyobb), a kosár összegzése előtt átállíthatod a termék szállítási osztályát. A példa a woocommerce_before_calculate_totals horogra kapcsolódik: végigmegy a kosár tételein, és ha a megadott mezők valamelyike nem üres, a termékre a megadott szállítási osztályt állítja.
function pelda_szallitasi_osztaly_kiegeszito_alapjan( $kosar ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) { return; }
$mezo_azonositok = array( 26, 27 ); $osztaly_slug = 'nagy-csomag';
$osztaly = get_term_by( 'slug', $osztaly_slug, 'product_shipping_class' ); if ( ! $osztaly ) { return; }
foreach ( $kosar->get_cart() as $tetel ) { if ( empty( $tetel['product_extras']['groups'] ) ) { continue; } foreach ( $tetel['product_extras']['groups'] as $csoportok ) { foreach ( $csoportok as $mezo ) { if ( in_array( (int) $mezo['field_id'], $mezo_azonositok, true ) && ! empty( $mezo['value'] ) ) { $tetel['data']->set_shipping_class_id( $osztaly->term_id ); break 3; } } } }}add_action( 'woocommerce_before_calculate_totals', 'pelda_szallitasi_osztaly_kiegeszito_alapjan', 20 );Beállítanivalók a kódban:
| Érték | Mit csinál |
|---|---|
$mezo_azonositok |
Azoknak a kiegészítő mezőknek az azonosítója, amelyeket a kód vizsgál. |
$osztaly_slug |
A WooCommerce-ben már létező szállítási osztály url-neve (slug). Ha nincs ilyen, a kód nem csinál semmit. |
! empty( $mezo['value'] ) |
Alapból bármilyen kitöltött érték elég. Ha csak egy adott érték számít, cseréld erre: $mezo['value'] === 'valami'. |
A kód csak akkor állítja át az osztályt, ha van találat, a mező kiürítésekor nem állítja vissza az eredetit. Éles webhelyen használat előtt próbáld ki egy tesztkosárral, amelyben szerepel egyező és nem egyező termék is.
Készült: