Sari la conținut
WEBLURE

WooCommerce · Personalizare produse

WooCommerce: configurarea prețului după dimensiunile introduse

Oglindă, geam, banner sau mochetă la dimensiunea clientului. Prețul vine din lungime, lățime și o regulă de preț, cu limite clare.

  • Lungime și lățime
  • Limite minime și maxime
  • Formulă pe suprafață
  • Validare la adăugare
  • Preț afișat înainte de coș

Răspuns în aceeași zi lucrătoare Ofertă fixă Fără parole

Vrei să ți-o facem noi?

Doar două câmpuri. Răspundem în aceeași zi lucrătoare, cu ofertă fixă.

+ Telefon și detalii (opțional)

Răspuns rapid

Pentru produse la dimensiune cerută colectezi lungimea și lățimea în două câmpuri numerice, le validezi (minim, maxim, unitate), le salvezi în datele articolului din coș și recalculezi prețul în woocommerce_before_calculate_totals. Extensia Product Add-Ons are câmpuri cantitate și preț definit de client, cu limite, dar nu documentează o formulă pe lungime × lățime: pentru asta folosești cod propriu sau o extensie specializată.

Ce ai nevoie

  • Preț pe mp sau formulă proprie
  • Dimensiuni minime și maxime
  • Unitatea (cm sau m)
  • Acces la tema copil

Pașii, pe rând

  1. 1Definește formulaPreț pe mp × suprafață, plus un cost fix, un minim de comandă și rotunjirea (de exemplu la 0,01 mp). Scrie și unitatea cerută (cm sau m).
  2. 2Stabilește limiteleDimensiuni minime și maxime pe care le poți produce și transporta. Mesajele de eroare trebuie să spună clar ce limite sunt.
  3. 3Adaugă câmpurileDouă câmpuri numerice pe pagina produsului (cu min, max și step), validate la adăugarea în coș.
  4. 4Salvează dimensiunile în coșPrin woocommerce_add_cart_item_data păstrezi lungimea și lățimea, iar produsele cu dimensiuni diferite rămân linii separate.
  5. 5Recalculează prețulÎn woocommerce_before_calculate_totals setezi prețul din suprafața × tarif, pornind mereu de la un tarif de bază, nu de la prețul modificat.
  6. 6Copiază dimensiunile în comandăCu woocommerce_checkout_create_order_line_item păstrezi lungimea și lățimea în linia comenzii, pentru atelier.
  7. 7Testează valorile limităMinim, maxim, zecimale, valori goale și negative; verifică coșul, comanda și factura.

Preț după suprafață, cu validare (schelet)

php
add_filter('woocommerce_add_to_cart_validation', function ($ok, $product_id) {
    $l = isset($_POST['lungime']) ? (float) $_POST['lungime'] : 0;
    $w = isset($_POST['latime'])  ? (float) $_POST['latime']  : 0;
    if ($l < 0.3 || $l > 3 || $w < 0.3 || $w > 2) {
        wc_add_notice('Dimensiuni acceptate: lungime 0,3–3 m, lățime 0,3–2 m.', 'error');
        return false;
    }
    return $ok;
}, 10, 2);

add_filter('woocommerce_add_cart_item_data', function ($data) {
    if (!empty($_POST['lungime']) && !empty($_POST['latime'])) {
        $data['lungime'] = (float) $_POST['lungime'];
        $data['latime']  = (float) $_POST['latime'];
    }
    return $data;
});

add_action('woocommerce_before_calculate_totals', function ($cart) {
    foreach ($cart->get_cart() as $item) {
        if (empty($item['lungime'])) continue;
        $tarif_mp = (float) $item['data']->get_regular_price(); // prețul produsului = lei / mp
        $item['data']->set_price(round($item['lungime'] * $item['latime'] * $tarif_mp, 2));
    }
});

Fragmentele de cod sunt scheleturi: le adaptezi la magazinul tău și le testezi întâi pe un mediu de test (staging). Aici prețul produsului reprezintă tariful pe metru pătrat. Intervalele de dimensiuni sunt exemple. Validarea se aplică tuturor produselor: restrânge-o la cele cu dimensiuni.

Fragmentul e o soluție proprie; documentația Product Add-Ons nu descrie formule pe lungime × lățime. Verifică efectul asupra TVA, reducerilor și integrărilor de facturare.

Nu vrei să te complici sau ai rămas blocat? Scrie-ne și o facem noi.

Scrie-ne pe WhatsAppCere ofertă

Mai multe detalii

Cauze frecvente și greșeli de evitatDacă pașii de mai sus nu au rezolvat problema
1

Prețul ignoră dimensiunile

De ce: Datele nu sunt salvate în coș sau cheia diferă.

Ce faci: Verifică woocommerce_add_cart_item_data și numele cheilor.

2

Valori imposibile ajung în comandă

De ce: Validarea lipsește sau e doar în JavaScript.

Ce faci: Validează și pe server.

3

Prețul se schimbă între coș și comandă

De ce: Alt plugin modifică prețul.

Ce faci: Fă testul de conflicte.

Întrebări frecvente4 răspunsuri
Pot folosi Product Add-Ons?

Pentru preț definit de client sau cantitate cu limite da; formula lungime × lățime nu e descrisă în documentația lui.

Ce unitate folosesc?

Una singură, clar scrisă pe pagină (cm sau m), și aceeași în cod și în producție.

Cum țin cont de transport?

Greutatea se poate calcula din suprafață; vezi ghidul despre transport în funcție de greutate.

Mă ajutați să-l implementez?

Da, cu teste pe facturare. Cere ofertă fixă.