Tovább a tartalomhoz

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.

  1. Nyisd meg a WooCommerce → Beállítások → Termékkiegészítők oldalt.
  2. Az Általános fülön, a Fejlesztések résznél jelöld be a Kosárszerkesztés bekapcsolása négyzetet.
  3. 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.

https://minta-bolt.hu/kosar/
A kosár egy sora a terméknév melletti Opciók szerkesztése hivatkozással

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.

https://minta-bolt.hu/product/keramia-bogre/?attribute_szin=Piros&pewc_key=8cafb0cd29ccfb4883eddcc5d652b907
A termékoldal szerkesztő módban, előre kitöltött mezőkkel és a Termék frissítése gombbal

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.

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_parents szű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ül
add_filter( 'pewc_show_link_only_cart', '__return_true' );
// Bélyegkép nélkül a rendelés oldalán
add_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:

Tiszteletben tartjuk a magánszférádat

Sütiket használunk a böngészési élmény javítására és a forgalom elemzésére. Az analitika csak akkor indul, ha engeded. Adatvédelmi irányelvek, Sütitájékoztató.

Sütibeállítások