Tovább a tartalomhoz

Árazási példák: adóosztály, SKU, súly, ingyenes minta

Gyakorlati megoldások: másik adóosztály egy kiegészítőre, cikkszám és súly a kiegészítőknek, ingyenes minták közvetlen kosárba tétele.

Ezek a megoldások a Termékek mezőtípusra épülnek (Pro változat): a kiegészítőt önálló termékként hozod létre, így lehet saját ára, adóosztálya, cikkszáma, súlya és készlete.

Másik adóosztály egy kiegészítő opcióra

Szekció neve “Másik adóosztály egy kiegészítő opcióra”

A mezők és opciók ára a fő termék adóosztályát követi. Ha egy kiegészítőre más adóosztály kell:

  1. Hozz létre egy új terméket a kiegészítő opcióhoz. Ha nem szeretnéd, hogy megjelenjen a bolt oldalain, rejtsd el (lásd lent a rejtett termékeket).
  2. Rendelj hozzá adóosztályt ehhez a termékhez.
  3. A fő terméken adj hozzá egy Termékek mezőt, és gyermekterméknek add meg az új kiegészítő-terméke(ke)t.
  4. A fő terméknek is add meg az adóosztályát.

Amikor a vásárló kiválaszt egy vagy több opciót, azok ára a fő termékétől eltérő adóosztályt kap.

A kiegészítő opcióknak alapból nincs cikkszáma. Ha kell (például követnéd a készletüket), a legjobb megoldás a Termékek mezőtípus: a kiegészítőt önálló termékként hozod létre ár, súly, készlet és cikkszám megadásával, majd gyermekterméknek rendeled a fő termékhez. A mezőtípus beállításai a Termékek mező fejezetben vannak.

A gyermektermékek önálló vásárlásának tiltása

Szekció neve “A gyermektermékek önálló vásárlásának tiltása”

Ha nem szeretnéd, hogy a gyermektermékeket a vevő külön is megvegye, állítsd a termék láthatóságát rejtettre. A bolt oldalain ekkor nem jelenik meg, de aki ismeri a webcímét, még elérheti. Hogy ez se menjen, kapcsold be a WooCommerce → Beállítások → Termékkiegészítők → Termékek oldalon a Rejtett termékek átirányítása beállítást.

Ha a cikkszámot a választott opciók szerint szeretnéd alakítani (például betűt vagy számot fűznél a termék cikkszámához), ahhoz egyéni paramétert kell a mezőkhöz adni, kóddal.

A szállítási díj számításához gyakran kell a kiegészítők súlya is. Három módszer van:

  • Gyermektermékekkel (kód nélkül, Pro): a kiegészítőket önálló termékként hozod létre, saját súllyal és mérettel. Ha a vásárló kiválasztja őket, a súlyuk a kosárba kerül, és a szállítási díj helyesen számolódik. A gyermektermékeket elrejtheted a bolt többi részéből (Rejtett termékek átirányítása). Súly alapú szállítási bővítménnyel együtt a kiegészítők súlya hat a szállítási díjra.
  • Számítás mezővel (Pro): a Számítás mező a felhasználói bevitelekből, árakból és más változókból értéket számol, ezzel a termék súlya is beállítható.
  • Kóddal: rádiógomb- vagy kiválasztás mezők opcióihoz egy kódrészlettel súly-paramétert is adhatsz. Három részből áll: egy szám típusú mezőt ad az opciók beállításához, a választott opciók súlyát összegzi a kosár adataiban, és a kosárban kiírja a súlyt.
<?php
/**
* Súly-paraméter hozzáadása a mezők opcióihoz
*/
function prefix_add_option_param( $option_count, $group_id, $item_key, $item, $key ) {
$name = '_product_extra_groups_' . esc_attr( $group_id ) . '_' . esc_attr( $item_key ) . '[field_options][' . esc_attr( $option_count ) . ']';
$weight = isset( $item['field_options'][esc_attr( $key )]['weight'] ) ? $item['field_options'][esc_attr( $key )]['weight'] : '';
?>
<td class="pewc-option-extra">
<input type="number" class="pewc-field-option-weight" name="<?php echo $name; ?>[weight]" value="<?php echo esc_attr( $weight ); ?>" step="0.01">
</td>
<?php
}
add_action( 'pewc_after_option_params', 'prefix_add_option_param', 10, 5 );
/**
* A súly hozzáadása a kosártétel adataihoz
*/
function prefix_end_add_cart_item_data( $cart_item_data, $item, $group_id, $field_id, $value ) {
if ( ! empty( $item['field_options'] ) ) {
$value_arr = ( strpos( $value, ' | ' ) !== false ) ? explode( ' | ', $value ) : array( $value );
foreach ( $value_arr as $value ) {
foreach ( $item['field_options'] as $option ) {
$option_len = strlen( $option['value'] );
if ( substr( $value, 0, $option_len ) == $option['value'] ) {
$weight = isset( $cart_item_data['product_extras']['weight'] ) ? $cart_item_data['product_extras']['weight'] : 0;
$weight += floatval( $option['weight'] );
$cart_item_data['product_extras']['weight'] = $weight;
}
}
}
}
return $cart_item_data;
}
add_filter( 'pewc_filter_end_add_cart_item_data', 'prefix_end_add_cart_item_data', 10, 5 );
/**
* A súly kiírása a kosárban
*/
function prefix_get_item_data( $item_data, $cart_item ) {
if ( ! empty( $cart_item['product_extras']['weight'] ) ) {
$item_weight = $cart_item['product_extras']['weight'];
$item_data[] = array(
'key' => __( 'Weight', 'woocommerce' ),
'value' => $item_weight,
'display' => $item_weight . ' ' . get_option( 'woocommerce_weight_unit' ),
);
}
return $item_data;
}
add_filter( 'woocommerce_get_item_data', 'prefix_get_item_data', 10, 2 );

Ingyenes minták közvetlenül a kosárba

Szekció neve “Ingyenes minták közvetlenül a kosárba”

A Termékek mezővel (Pro) elérheted, hogy a vásárló a termékoldalról ingyenes mintákat tegyen a kosarába anélkül, hogy bármi mást venne.

  1. Hozz létre egy terméket minden mintához. Például egy szövetmintánál kék, zöld és piros mintához három termék kell. Az áruk legyen 0, a kiemelt képük a minta képe. Ha nem akarod őket a bolt kínálatában, a Katalógus láthatósága legyen Rejtett. Betehetsz őket külön kategóriába is.
  2. Add a mintákat a fő termékhez. A fő terméken vegyél fel egy Termékek mezőt, és állítsd be: a Gyermektermékek a minta-termékek, a Termékek elrendezése Jelölőnégyzetes képek, a Termékmennyiségek Csak egy. Jegyezd meg a mező azonosítóját (a példában 4083).
  3. Add hozzá a kódrészletet a webhelyedhez (kódrészlet-kezelő bővítménnyel vagy a functions.php-ban). A rész elején a demo_get_free_sample_field_ids() függvényben cseréld le a mezőazonosítókat a sajátodéra.
<?php
function demo_get_free_sample_field_ids() {
return array( 123, 456, 789 ); // Írd át a saját mezőazonosítóidra
}
// A minta-mezők kapnak egy saját CSS-osztályt
function demo_child_product_wrapper_classes( $wrapper_classes, $child_product_id, $item ) {
if ( in_array( $item['field_id'], demo_get_free_sample_field_ids() ) ) {
$wrapper_classes[] = 'sample-wrapper';
}
return $wrapper_classes;
}
add_filter( 'pewc_child_product_wrapper_classes', 'demo_child_product_wrapper_classes', 10, 3 );
// Hozzáadás és eltávolítás gomb a minták neve után
function demo_after_child_product_item( $name, $item, $available_stock, $child_product ) {
if ( in_array( $item['field_id'], demo_get_free_sample_field_ids() ) ) {
$add = sprintf(
'<p><a href="#" class="button alt pewc-add-button">%s</a><a href="#" class="button pewc-add-button pewc-added">%s</a></p>',
__( 'Add', 'pewc' ),
__( 'Remove', 'pewc' )
);
return $name . $add;
}
return $name;
}
add_filter( 'pewc_child_product_name', 'demo_after_child_product_item', 10, 4 );
// AJAX: a minta közvetlen kosárba tétele
function pewc_ajax_add_child_product_to_cart() {
$result = WC()->cart->add_to_cart( intval( $_POST['product_id'] ), intval( $_POST['quantity'] ) );
$result ? wp_send_json_success() : wp_send_json_error();
}
add_action( 'wp_ajax_pewc_add_child_product_to_cart', 'pewc_ajax_add_child_product_to_cart' );
add_action( 'wp_ajax_nopriv_pewc_add_child_product_to_cart', 'pewc_ajax_add_child_product_to_cart' );

A minták ettől még nem kerülnek kosárba: a gomb kattintását egy kis JavaScript is kezeli, amely az AJAX-hívást elküldi a kiválasztott minta azonosítójával és mennyiségével. A lábléc scriptjében ezt a hívást kell megvalósítani:

jQuery( '.child-product-wrapper .pewc-add-button:not(.pewc-added)' ).on( 'click', function ( e ) {
e.preventDefault();
var $gomb = jQuery( this );
var $minta = $gomb.closest( '.pewc-checkbox-image-wrapper' );
var mennyiseg = $minta.find( '.pewc-quantity-wrapper input' ).val() || 1;
var termekId = $minta.find( '.pewc-checkbox-form-field' ).val();
$gomb.css( 'pointer-events', 'none' );
jQuery.ajax( {
url: pewc_vars.ajaxurl,
type: 'POST',
data: { action: 'pewc_add_child_product_to_cart', product_id: termekId, quantity: mennyiseg },
success: function ( valasz ) {
if ( valasz.success ) {
$gomb.text( 'A kosárba került' );
jQuery( 'body' ).trigger( 'wc_fragment_refresh' );
} else {
$gomb.css( 'pointer-events', 'auto' );
}
}
} );
} );

A minta-mezők kinézetét (például az ár elrejtését és a keret nélküli megjelenítést) a .sample-wrapper osztályra írt saját CSS-sel igazíthatod.

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