WooCommerce · Personalizare produse
WooCommerce: calcularea prețului după numărul de caractere
Gravura costă 2 lei pe literă, cu un minim. Documentația Product Add-Ons nu descrie tarif pe caracter, așa că prețul se calculează în coș, cu cod.
- Tarif pe literă
- Prag minim și maxim
- woocommerce_before_calculate_totals
- Preț afișat în coș
- Teste de rotunjire
Răspuns în aceeași zi lucrătoare Ofertă fixă Fără parole
Răspuns rapid
Product Add-Ons are preț fix, procentual sau pe cantitate, dar documentația lui nu menționează tarif pe caracter. Soluția: păstrezi textul în datele articolului din coș și recalculezi prețul în woocommerce_before_calculate_totals (cârlig prezent în codul sursă al coșului), cu o formulă clară: tarif × număr de caractere numărate după regula ta, cu minim și maxim. Afișează formula clientului înainte de adăugare.
Ce ai nevoie
- Tariful pe literă și pragurile
- Regula pentru spații și diacritice
- Acces la tema copil
- Un mediu de test
Pașii, pe rând
- 1Definește formulaTarif pe caracter, preț minim, preț maxim, ce numeri (spații, semne, diacritice). Scrie formula pe pagina produsului.
- 2Colectează textulAcelași câmp ca la ghidul despre text de gravat: validare, salvare în coș, copiere în comandă.
- 3Calculează prețul în coșÎn woocommerce_before_calculate_totals parcurgi articolele și setezi prețul produsului după numărul de caractere. Fragmentul de mai jos arată structura.
- 4Evită dublarea adaosuluiHook-ul rulează de mai multe ori: calculează întotdeauna de la prețul de bază al produsului, nu din prețul deja modificat.
- 5Arată prețul clientuluiAfișează un total estimat pe pagina produsului și mențiunea „prețul se calculează după numărul de litere” lângă buton.
- 6Testează rotunjirileTexte de 1, 10 și 40 de caractere, cu spații și diacritice; verifică coșul, comanda și factura.
- 7Documentează regulaNotează formula pentru colegii care văd comanda: pentru dispute, regula trebuie să fie clară.
Preț în funcție de numărul de litere (schelet)
phpadd_action('woocommerce_before_calculate_totals', function ($cart) {
if (is_admin() && !defined('DOING_AJAX')) return;
foreach ($cart->get_cart() as $item) {
if (empty($item['text_gravat'])) continue;
$litere = mb_strlen(preg_replace('/\s+/u', '', $item['text_gravat'])); // fără spații
$baza = (float) $item['data']->get_regular_price();
$pret = $baza + max(5, $litere * 2.0); // 2 lei / literă, minim 5 lei
$item['data']->set_price($pret);
}
});Fragmentele de cod sunt scheleturi: le adaptezi la magazinul tău și le testezi întâi pe un mediu de test (staging). text_gravat este cheia datelor din coș (vezi ghidul despre text de gravat). Calculul pornește mereu de la prețul regulat al produsului. Dacă produsul are preț promoțional, adaptează formula.
Documentația Product Add-Ons nu menționează tarif pe caracter; fragmentul e o soluție proprie. Verifică impactul asupra TVA, promoțiilor și integrărilor de facturare.
Mai multe detalii
Cauze frecvente și greșeli de evitatDacă pașii de mai sus nu au rezolvat problema
Prețul se dublează la reîncărcarea coșului
De ce: Adaosul se aplică peste prețul deja modificat.
Ce faci: Pornește mereu de la prețul de bază al produsului.
Prețul nu se schimbă în coș
De ce: Cheia datelor din coș nu corespunde sau hook-ul nu rulează.
Ce faci: Verifică numele cheii și dacă datele sunt salvate la adăugare.
Prețul din comandă diferă de cel din coș
De ce: Alt plugin modifică prețul după calcul.
Ce faci: Fă testul de conflicte.
Întrebări frecvente4 răspunsuri
Numără spațiile?
E decizia ta; scrie regula pe pagină și aplic-o la fel în cod și în producție.
Merge cu variante?
Da, dacă formula pornește de la prețul variantei din coș; testează cazul.
Pot folosi Product Add-Ons în loc de cod?
Pentru prețuri fixe, procentuale sau pe cantitate da; tariful pe caracter nu e descris în documentație.
Mă ajutați cu formula?
Da, inclusiv teste pe facturare. Cere ofertă fixă.
Subiecte acoperite pe această pagină
- preț pe caracter WooCommerce
- tarif pe literă gravură
- woocommerce_before_calculate_totals
- preț personalizat în coș
- calcul preț gravură
Ghiduri apropiate
- WooCommerce: adăugarea textului de gravat în pagina produsului
- WooCommerce: încărcarea fotografiei pentru un produs personalizat
- WooCommerce: previzualizarea personalizării înainte de comandă
- WooCommerce: configurarea prețului după dimensiunile introduse
- WooCommerce: selectarea materialului și finisajului cu cost suplimentar
- WooCommerce: aprobarea machetei de către client înainte de producție
- WooCommerce: textul de gravat
- WooCommerce: prețul din coș diferă de prețul produsului
- Toate ghidurile
Surse și verificare
Verificat pe 5 noiembrie 2026. Denumirile din setări și pașii pot diferi între versiuni.
