Sari la conținut
WEBLURE

WooCommerce · Checkout

WooCommerce: validarea numărului de telefon la checkout

Un telefon greșit înseamnă un colet nelivrat. Validezi formatul la checkout, normalizezi numărul și îi dai clientului un mesaj clar de corectare.

  • Format românesc
  • Normalizare număr
  • Mesaj de eroare clar
  • Hook de validare
  • Checkout clasic și blocuri

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

La checkout-ul clasic, validezi telefonul în hook-ul woocommerce_checkout_process: normalizezi numărul (elimini spații, puncte, +4 sau 0040), verifici un format (de exemplu 07 urmat de 8 cifre pentru mobil românesc) și adaugi eroarea cu wc_add_notice(..., 'error'). Dacă telefonul e opțional, validezi doar când e completat. La checkout cu blocuri hook-urile clasice nu se aplică; câmpurile și validările se fac prin API-ul de câmpuri suplimentare.

Ce ai nevoie

  • Regula de acceptare (doar mobile RO sau și internaționale)
  • Acces la tema copil
  • Știi tipul de checkout
  • Un mediu de test

Pașii, pe rând

  1. 1Stabilește regulaAccepți doar mobile românești (07xx xxx xxx) sau și numere fixe sau internaționale? Regula depinde de curier și de clienți.
  2. 2Normalizează numărulElimină spații, cratime și puncte, apoi tratează prefixele +40 și 0040 ca 0. Valideaz-o pe forma normalizată.
  3. 3Validează la plasarea comenziiÎn woocommerce_checkout_process verifici formatul și, dacă nu e valid, adaugi o eroare cu wc_add_notice. Comanda nu se creează.
  4. 4Scrie un mesaj clarSpune ce nu e în regulă și dă un exemplu: „Introdu un număr de mobil valid, de exemplu 0712345678.”
  5. 5Salvează numărul normalizatDacă vrei să păstrezi forma curată, o salvezi normalizată în comandă; verifică doar că modulele de curierat o citesc corect.
  6. 6Tratează checkout-ul cu blocuriHook-ul de mai sus se aplică checkout-ului clasic. În checkout cu blocuri validarea se face prin API-ul de câmpuri suplimentare sau printr-un plugin compatibil.
  7. 7TesteazăNumere valide, cu prefix +40, cu spații, prea scurte, cu litere. Verifică și cazul în care telefonul e opțional.

Validare telefon mobil românesc (schelet, checkout clasic)

php
add_action('woocommerce_checkout_process', function () {
    $tel = isset($_POST['billing_phone']) ? sanitize_text_field(wp_unslash($_POST['billing_phone'])) : '';
    if ($tel === '') {
        return; // telefon opțional: nu validăm când e gol
    }
    $n = preg_replace('/[^0-9+]/', '', $tel);
    $n = preg_replace('/^(\+40|0040)/', '0', $n);
    if (!preg_match('/^07\d{8}$/', $n)) {
        wc_add_notice('Introdu un număr de mobil valid, de exemplu 0712345678.', 'error');
    }
});

Fragmentele de cod sunt scheleturi: le adaptezi la magazinul tău și le testezi întâi pe un mediu de test (staging). Regula acceptă doar mobile românești; adaptează-o dacă vinzi și în afara țării sau acceptă numere fixe.

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

Validarea nu rulează

De ce: Checkout-ul cu blocuri nu folosește hook-ul clasic.

Ce faci: Folosește API-ul de câmpuri suplimentare sau un plugin compatibil cu blocurile.

2

Clienți reali sunt respinși

De ce: Regula e prea strictă (fără numere fixe, +40 cu spații, formate internaționale).

Ce faci: Normalizează și relaxează regula unde e nevoie.

3

Telefonul ajunge greșit la curier

De ce: Modulul de curierat citește câmpul înainte de normalizare.

Ce faci: Salvează varianta normalizată înainte de generarea AWB.

Întrebări frecvente4 răspunsuri
Pot face telefonul obligatoriu?

Da, prin filtrul woocommerce_billing_fields (billing_phone['required'] = true). Documentația WooCommerce arată filtrul și pentru varianta opțională.

Funcționează cu +40 și 0040?

Da, dacă normalizezi prefixele înainte de verificare, ca în fragment.

Și la checkout cu blocuri?

Hook-ul clasic nu se aplică; pentru blocuri ai nevoie de altă implementare.

Mă ajutați cu validarea?

Da, cu regula potrivită pentru curierul tău. Cere ofertă fixă.