Hopp til innholdet
🚫 WooCommerce checkout index forstyrrer kunder: 4 måter å fjerne verifisering på

🚫 WooCommerce checkout index forstyrrer kunder: 4 måter å fjerne verifisering på

Hvorfor postnummer-validering er en unødvendig barriere

WooCommerce krever postnummer-feltet som standard og validerer det. Men her er realiteten: dusinvis av land i Afrika, Mellom-Amerika og Oseania bruker ikke postnummer i det hele tatt. En kjøper fra Kenya eller Jamaica taster inn tilfeldige sifre, får en feilmelding og forlater siden.

Ekstra felt og feil på betalingssiden skader konverteringen direkte. Ifølge Baymard Institute har 17% av amerikanske kjøpere forlatt en kasse spesifikt fordi den var for lang eller komplisert. Å fjerne ett eller to unødvendige felt er den billigste måten å øke salget på uten et annonsebudsjett.

Nedenfor finner du fire måter å deaktivere validering på: fra å fjerne feltet helt til bare å gi det nytt navn. Velg basert på målgruppen din.

💡 Rask oversikt:

  • Fjern postnummer-feltet helt via unset(), for butikker som ikke trenger det i det hele tatt
  • Gjør postnummer valgfritt, for butikker med en blandet geografisk målgruppe
  • Fjern unødvendige felt fra faktureringsskjemaet, hvis postnummer bare er en del av problemet
  • Endre feltetiketten til noe brukeren forstår, minimalt inngrep
  • Vurder utvidelser hvis du foretrekker å ikke røre kode

Metode 1: Fjern postnummer-feltet helt fra kassen

Den mest radikale og ryddige metoden. Kroken woocommerce_checkout_fields gir full kontroll over alle kassefelt: ta matrisen, kutt ut billing_postcode og returner den.

Legg koden i barnetemaets functions.php:

1/**
2 * Remove the postal code field (billing_postcode) from checkout.
3 */
4add_filter( 'woocommerce_checkout_fields', 'quadlayers_remove_billing_postcode_checkout' );
5function quadlayers_remove_billing_postcode_checkout( $fields ) {
6 unset( $fields['billing']['billing_postcode'] );
7 return $fields;
8}

Hva som skjer her. Kroken woocommerce_checkout_fields mottar hele matrisen med kassefelt: fakturering, frakt og ordre. Funksjonen unset() kutter den spesifikke nøkkelen billing_postcode ut av billing-seksjonen. Matrisen returneres til WooCommerce uten postnummer-feltet, slik at det forsvinner fra både skjemaet og valideringen.

Men hvis målgruppen din er blandet og noen kunder trenger postnummer, se metode 2.

Metode 2: Gjør postnummer valgfritt

I stedet for å fjerne feltet kan du ganske enkelt fjerne avhukingen for påkrevd. Feltet forblir på siden, men kjøperen kan hoppe over det uten en feilmelding.

Her bruker vi filteret woocommerce_default_address_fields, som håndterer standardinnstillinger for alle adressefelt:

1/**
2 * Make the postal code field optional.
3 */
4add_filter( 'woocommerce_default_address_fields', 'quadlayers_optional_postcode_checkout' );
5function quadlayers_optional_postcode_checkout( $p_fields ) {
6 $p_fields['postcode']['required'] = false;
7 return $p_fields;
8}

Forskjellen fra den første metoden ligger i kroken. woocommerce_default_address_fields fungerer ett nivå lavere: den angir egenskapene til selve feltene (etikett, plassholder, påkrevd) før de havner i fakturerings- og fraktseksjonene. Det er derfor nøkkelen her ganske enkelt er postcode, uten billing_-prefikset.

Egnet for butikker som selger til land både med og uten postnummer.

Metode 3: Fjern unødvendige felt fra faktureringsskjemaet

Ofte er problemet bredere enn bare postnummer. Firma-, adresse_2-, by- og delstat-feltene er heller ikke alltid nødvendige: hvert enkelt legger til friksjon i kassen.

Den samme kroken woocommerce_checkout_fields fjerner ethvert felt etter identifikatoren. Her er den fullstendige listen over tilgjengelige nøkler for faktureringsseksjonen:

1unset( $fields['billing']['billing_company'] );
2unset( $fields['billing']['billing_address_2'] );
3unset( $fields['billing']['billing_city'] );
4unset( $fields['billing']['billing_state'] );
5unset( $fields['billing']['billing_phone'] );

Navnene er selvforklarende. Prefikset billing_ indikerer at feltet tilhører faktureringsskjemaet. For eksempel, for å fjerne company og address_2 sammen med postnummeret:

1/**
2 * Remove company, address_2 and postal code from checkout.
3 */
4add_filter( 'woocommerce_checkout_fields', 'quadlayers_remove_billing_fields' );
5function quadlayers_remove_billing_fields( $fields ) {
6 unset( $fields['billing']['billing_company'] );
7 unset( $fields['billing']['billing_address_2'] );
8 unset( $fields['billing']['billing_postcode'] );
9 return $fields;
10}

Flere unset()-kall kan fint leve side om side i én funksjon: bare list opp nøklene du vil skjule.

Metode 4: Gi et felt nytt navn til noe brukeren forstår

Minimalt inngrep med maksimal effekt. Du rører ikke validering, du endrer bare den kryptiske etiketten «Postnummer» til noe målgruppen din forstår. For eksempel «Bydel» eller «Postkode (hvis du har)».

Vi bruker gettext-hooken, den samme som WordPress og WooCommerce bruker for å oversette grensesnittet:

1/**
2 * Change checkout field labels via gettext.
3 */
4add_filter( 'gettext', 'quadlayers_billing_field_strings', 20, 3 );
5function quadlayers_billing_field_strings( $translated_text, $text, $domain ) {
6 switch ( $translated_text ) {
7 case 'Postcode / ZIP':
8 $translated_text = __( 'Area code', 'woocommerce' );
9 break;
10 }
11 return $translated_text;
12}

Hvis du vil gi flere felt nye navn, legger du til caser i switchen:

1function quadlayers_billing_field_strings( $translated_text, $text, $domain ) {
2 switch ( $translated_text ) {
3 case 'Billing details':
4 $translated_text = __( 'Order information', 'woocommerce' );
5 break;
6 case 'Ship to a different address?':
7 $translated_text = __( 'Send to other location please', 'woocommerce' );
8 break;
9 case 'Company name':
10 $translated_text = __( 'Company', 'woocommerce' );
11 break;
12 case 'Postcode / ZIP':
13 $translated_text = __( 'Area code', 'woocommerce' );
14 break;
15 }
16 return $translated_text;
17}

I skjermbildet over ser du resultatet av å kombinere tilnærminger: flere felt er skjult, postnummerfeltet har fått nytt navn til «Områdekode» og er gjort valgfritt, og overskriftene for fakturerings- og leveringsseksjonene er erstattet med egendefinerte. Kassen ble kortere og ryddigere, uten utvidelser.

Utvidelser for å administrere kassefelt

Hvis du ikke vil røre functions.php, finnes det ferdige verktøy. La oss se på to gratis utvidelser som løser problemet uten en eneste kodelinje.

Checkout field manager for WooCommerce

Checkout Field Manager, en av de mest populære redigeringsverktøyene for kassefelt. Den lar deg legge til, fjerne og endre rekkefølgen på felt i seksjonene Fakturering, Levering og Tillegg, alt via et visuelt grensesnitt.

Utvidelsen er gratis; grunnversjonen dekker hovedscenariene: skjul et felt, gjør det valgfritt, gi det nytt navn. For betinget logikk (vis et felt bare for et bestemt land) og flere felttyper finnes det en premiumversjon.

Direct Checkout for WooCommerce

Direct Checkout for WooCommerce (tidligere kalt «WooCommerce Direct Checkout») løser et bredere problem: den forenkler hele kasseprosessen. I tillegg til å fjerne felt kan den: hoppe over handlekurven og ta kunden rett til kassen, endre teksten på «Legg i handlekurv»-knappen, legge til AJAX-basert legg-i-handlekurv på produktsider.

Begge utvidelsene oppdateres jevnlig og er kompatible med gjeldende versjoner av WordPress og WooCommerce.

⁉️🤔 Ofte stilte spørsmål

Kan jeg deaktivere validering bare for enkelte land?

Ja. Du kan knytte sjekken til WC()->customer->get_billing_country() inne i woocommerce_checkout_fields-filteret og bruke unset() eller required = false bare for listen over land uten postnumre. Da vil kjøpere fra Tyskland eller USA fortsatt se et obligatorisk felt, mens kunder fra Kenya ikke vil det.

Vil frakt slutte å fungere etter at postnummer-validering er deaktivert?

Det avhenger av frakttjenesten. Postvesener som USPS eller Royal Mail bruker postnummer for å beregne priser; for dem er det bedre å beholde feltet som obligatorisk eller i det minste synlig. Hvis du selger digitale varer eller bruker budlevering innenfor en by, kan du trygt fjerne postnummeret. Test kostnadsberegningen for hver fraktsone etter at du har gjort endringer.

Koden fungerer ikke; postnummerfeltet er der fortsatt. Hva er galt?

Tre vanlige årsaker. Først: cache. Tøm nettstedets og nettleserens cache; etter at du har redigert functions.php, åpner du kassen i inkognitomodus. Andre: en annen utvidelse eller et tema overstyrer feltet senere enn filteret ditt. Prøv å øke hook-prioriteten: add_filter( 'woocommerce_checkout_fields', '...', 99 ). Tredje: du redigerer feil functions.php. Koden må ligge i filen til det aktive (barne-)temaet.

Hvordan fjerner jeg postnummerfeltet uten å redigere functions.php?

Installer Checkout field manager for WooCommerce; den lar deg deaktivere alle felt via administrasjonspanelet. Eller bruk Code Snippets-utvidelsen: lim inn PHP-koden fra metode 1 som en snippet og aktiver den. Begge alternativene er tryggere enn å redigere functions.php direkte og går ikke tapt når temaet oppdateres.

Hva om postnummer-validering er deaktivert, men WooCommerce fortsatt kaster en feil?

Mest sannsynlig genereres ikke feilen av WooCommerce-kjernen, men av en tredjepartsutvidelse, for eksempel en frakttjenesteutvidelse eller en adressevalidator. Deaktiver frakt- og adresseverifiseringsutvidelser én etter én for å finne synderen. Sjekk også om validering er satt på JavaScript-nivå i temaet; noen ganger dupliserer utviklere sjekken på frontend.

Et praktisk eksempel fra videoen

Se et levende eksempel på konfigurasjon av kassefelt, fra kode til resultatet på frontend:

Kode eller plugin: hva bør du velge?

Trenger du bare å fjerne ett eller to felt og er komfortabel med temaredigering, holder det med fire linjer PHP fra metode 1 eller 2. Det er lettvektsløsning og legger ikke til ekstra kode på nettstedet.

Har du mange felt å konfigurere, eksperimenterer du ofte med kassen, eller foretrekker du å ikke røre functions.php, velg Checkout Field Manager for WooCommerce. Den er gratis og gir deg visuell kontroll over alle felt uten risiko for å ødelegge nettstedet med en skrivefeil i koden.

For omfattende kasseoptimalisering (hoppe over handlekurven, AJAX-knapper, tilpassede etiketter) dekker Direct Checkout for WooCommerce alt i én enkelt plugin.

Den gylne regelen: etter eventuelle endringer, kjør en testordre fra start til slutt. Fem minutters testing sparer timer med opprydding i klager fra ekte kunder.