Sari la conținut
WEBLURE

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

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

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

  1. 1Definește formulaTarif pe caracter, preț minim, preț maxim, ce numeri (spații, semne, diacritice). Scrie formula pe pagina produsului.
  2. 2Colectează textulAcelași câmp ca la ghidul despre text de gravat: validare, salvare în coș, copiere în comandă.
  3. 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.
  4. 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.
  5. 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.
  6. 6Testează rotunjirileTexte de 1, 10 și 40 de caractere, cu spații și diacritice; verifică coșul, comanda și factura.
  7. 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)

php
add_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.

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 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.

2

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.

3

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ă.