Sari la conținut
WEBLURE

WooCommerce · Reguli de livrare

WooCommerce: restricționarea livrării în anumite localități

Nu livrezi peste tot sau livrezi doar local. Vezi ce poate face WooCommerce singur (județe, coduri poștale) și ce ai nevoie de cod pentru (localități), cu mesaj clar pentru client.

  • Zone pe județ și cod poștal
  • Localități excluse
  • Mesaj clar la checkout
  • Diacritice și variante de scriere
  • Test cu adrese reale

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

Zonele de livrare WooCommerce pot limita livrarea după țară, județ și cod poștal (cu wildcard-uri și intervale), dar nu după numele localității. Pentru localități, ai două căi: transformi localitățile în intervale de coduri poștale sau folosești cod care elimină metodele de livrare și afișează un mesaj la checkout când localitatea e exclusă. Compară numele fără diacritice și cu litere mici.

Ce ai nevoie

  • Lista localităților sau codurilor poștale permise/excluse
  • Un mesaj pentru client
  • Acces de administrator și la tema copil
  • Un mediu de test

Pașii, pe rând

  1. 1Începe cu zonele de livrareWooCommerce → Setări → Livrare → Zone de livrare. O zonă poate conține țări, județe și coduri poștale. Clienții din afara oricărei zone nu primesc nicio metodă de livrare.
  2. 2Folosește coduri poștale pentru precizieÎn zonă poți adăuga coduri poștale individuale, cu wildcard (cu asterisc) sau intervale. Dacă localitățile tale au coduri poștale clare, e varianta cea mai curată și nu cere cod.
  3. 3Ordonează zoneleZonele se verifică de sus în jos și prima care se potrivește câștigă. Pune zona restrictivă înaintea celei largi.
  4. 4Pentru localități: elimină metodele prin codFragmentul de mai jos scoate metodele de livrare când localitatea din adresa de livrare e într-o listă de excluse, normalizată fără diacritice.
  5. 5Afișează un mesaj înainte de plasarea comenziiFără mesaj, clientul vede doar că nu există metode de livrare. Cu validarea de la checkout, afli exact de ce și poți sugera o alternativă (ridicare personală, alt curier).
  6. 6Tratează variantele de scriere„București”, „Bucuresti”, „BUCUREȘTI”, „Sector 3”. Compară după normalizare (litere mici, fără diacritice) și, unde se poate, folosește un selector de localitate în checkout.
  7. 7TesteazăCu adrese din zona permisă, din zona exclusă și cu variante de scriere. Verifică atât coșul, cât și checkout-ul.

Scoate metodele de livrare pentru localități excluse

php
function wl_norm($s) {
    $s = remove_accents($s);
    return strtolower(trim($s));
}

add_filter('woocommerce_package_rates', function ($rates, $package) {
    $excluse = ['exemplu localitate', 'alta localitate']; // fără diacritice, litere mici
    $oras = wl_norm($package['destination']['city'] ?? '');
    if ($oras && in_array($oras, $excluse, true)) {
        return []; // nicio metodă de livrare
    }
    return $rates;
}, 100, 2);

add_action('woocommerce_after_checkout_validation', function ($data, $errors) {
    $excluse = ['exemplu localitate', 'alta localitate'];
    $oras = wl_norm($data['shipping_city'] ?? ($data['billing_city'] ?? ''));
    if ($oras && in_array($oras, $excluse, true)) {
        $errors->add('livrare_localitate', 'Din păcate nu livrăm în această localitate. Poți alege ridicarea personală sau ne poți scrie pentru alte variante.');
    }
}, 10, 2);

Fragmentele de cod sunt scheleturi: le adaptezi la magazinul tău și le testezi întâi pe un mediu de test (staging). Dacă folosești „Livrează la altă adresă”, orașul de livrare e în câmpul shipping_city; fragmentul îl folosește când există.

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

Clientul scrie localitatea în alt fel

De ce: Diacriticele, prescurtările și literele mari dau variante care nu se potrivesc cu lista.

Ce faci: Normalizează ambele părți și, de preferat, folosește selectoare de județ și localitate.

2

O zonă largă prinde adresa înaintea celei restrictive

De ce: Zonele se evaluează în ordine.

Ce faci: Reordonează zonele, cu cea mai restrictivă prima.

3

Mesajul nu apare

De ce: Validarea rulează pe un câmp care nu există (livrare la altă adresă nebifată).

Ce faci: Citește orașul de livrare când există, altfel pe cel de facturare, ca în fragment.

Întrebări frecvente4 răspunsuri
Pot limita livrarea după oraș direct din zone?

Nu. Zonele permit țară, județ și cod poștal (cu wildcard și intervale), nu numele localității. Pentru localități folosești coduri poștale sau cod personalizat.

Ce văd clienții din afara zonelor?

Niciun tarif de livrare. De aceea merită un mesaj explicit sau o metodă alternativă.

Pot permite doar livrarea locală?

Da: o zonă cu codurile poștale locale și, eventual, ridicare personală pentru restul.

Îl implementați pentru mine?

Da. Ne trimiți lista de localități sau coduri și îți răspundem cu o ofertă fixă.