WooCommerce checkout henger i innlasting? Vanlige årsaker og løsninger
En WooCommerce checkout-side som henger i innlasting, er mer enn en irritasjon. Den hindrer kunder i å legge inn bestillinger, blokkerer betalingsmetoder fra å laste, og tapper i det stille omsetning mens resten av nettstedet ser helt normalt ut. Symptomet er som regel enkelt: kunden når checkouten, fyller inn detaljene sine, og ordresammendraget bare fortsetter å spinne. Noen ganger dukker ikke betalingsmetodene opp, noen ganger blir «Fullfør bestilling»-knappen uresponsiv, og noen ganger skjer det ingenting åpenbart i det hele tatt.
Det vanskelige er at innlastingsproblemer i checkouten kan komme fra flere ulike lag: pluginkonflikter, temaproblemer, caching, AJAX-svikt, PHP-advarsler, betalingsgateway-konflikter, rewrites på servernivå, sikkerhets- og brannmurregler, ødelagt JavaScript eller ugyldige JSON-responser. Derfor er den beste løsningen ikke å deaktivere plugins tilfeldig eller bygge checkouten på nytt. Den beste løsningen er å finne hvor checkout-forespørselen faktisk ryker.
Denne guiden forklarer hvorfor WooCommerce-checkout henger i innlasting, hvordan du feilsøker det ordentlig, og hva du bør sjekke før du gjør større endringer.
Hva betyr vanligvis «WooCommerce checkout henger i innlasting»?
WooCommerce-checkout er dynamisk. Når en kunde fyller inn fakturadetaljer, bytter land, legger til en rabattkode, velger frakt eller velger betalingsmetode, sender WooCommerce bakgrunnsforespørsler for å oppdatere ordresammendraget. De forespørslene går via AJAX, og en vanlig en ser slik ut:
/?wc-ajax=update_order_review
Denne forespørselen oppdaterer ordretotal, avgift, fraktmetoder, betalingsmetoder, rabattkodeberegninger, handlekurv-fragmenter og meldinger i checkouten. Hvis den feiler eller returnerer feil respons, kan checkout-siden henge i det uendelige. Spinneren er sjelden det egentlige problemet. Den er bare det synlige symptomet. Den faktiske årsaken er som regel en av disse:
- Forespørselen fullføres aldri
- Forespørselen returnerer en feil
- Forespørselen returnerer HTML i stedet for JSON
- Forespørselen blokkeres av sikkerhetsregler
- PHP-advarsler injiseres i responsen
- JavaScript klarer ikke å behandle de returnerte dataene
- Caching serverer utdatert eller ugyldig innhold
Vanlige symptomer på en ødelagt WooCommerce-checkout
Et innlastingsproblem i checkouten dukker opp på ulike måter. Du kan se en evig spinner i ordresammendraget, betalingsmetoder som aldri dukker opp, en «Fullfør bestilling»-knapp som ikke lar seg klikke, en side som lastes på nytt uten å legge inn bestillingen, fraktmetoder som ikke oppdateres, en uresponsiv rabattkode-seksjon, felt som oppfører seg rart, konsollfeil, betalingsgateway-feil, en tom ordresammendrag-boks, eller en ordrebekreftelsesside som aldri nås. Kunder rapporterer ofte at «betalingen ikke fungerer», men gatewayen er kanskje ikke det egentlige problemet. Checkouten kan ryke før betalingssteget i det hele tatt begynner.
Regel nummer én: Ikke anta at det er betalingsgatewayen
Når checkouten feiler, får betalingspluginen skylden først. Det er forståelig, siden checkout og betaling skjer tett på hverandre. Men WooCommerce-checkout kan ryke lenge før betaling er involvert. Før du legger skylden på Stripe, PayPal, Mollie, Klarna, Vipps eller en annen gateway, sjekk om selve checkout-AJAX-forespørselen fungerer. Hvis update_order_review feiler, kan gatewayen bare være et nedstrøms symptom. En rask test:
- Aktiver midlertidig en enkel betalingsmetode, som bankoverføring.
- Deaktiver hovedbetalingsgatewayen.
- Test checkouten på nytt.
- Sjekk om spinneren fortsatt dukker opp.
Hvis checkouten fortsatt henger med en enkel metode aktivert, er problemet sannsynligvis ikke betalingsleverandøren.
Årsak 1: WooCommerce-AJAX som returnerer feil respons
Dette er en av de viktigste årsakene. WooCommerce forventer at checkout-AJAX-responser er gyldig JSON, men noen ganger returnerer serveren en vanlig HTML-side i stedet. I Network-fanen i nettleseren kan du se:
Status: 200 OK
Content-Type: text/html
Ved første øyekast ser 200 OK vellykket ut. Men hvis WooCommerce forventer JSON og får HTML, klarer ikke checkout-JavaScripten å behandle responsen, og resultatet er som regel en evig spinner. Hvis du åpner responsen og ser en full nettside som denne, er det et problem:
<!DOCTYPE html>
<html>
<head>
<title>...</title>
</head>
<body>
...
</body>
</html>
Det betyr at noe fanger opp AJAX-forespørselen. Mulige syndere er en .htaccess-rewrite, et cache-lag, en omdirigeringsregel, en sikkerhetsplugin, vedlikeholdsmodus, en innloggingsomdirigering, egendefinert PHP-output, en brannmurside fra serveren, eller en tema- eller pluginkonflikt. Det er nettopp derfor det er kritisk å sjekke responskroppen.
Årsak 2: Caching av checkout, handlekurv eller AJAX-forespørsler
Handlekurv og checkout må forbli dynamiske. De bør aldri serveres som statisk bufrede sider. Når caching er feilkonfigurert, kan WooCommerce vise utdaterte handlekurvdata, ødelagte totaler, ugyldige øktdata eller evig innlasting. Vanlige kilder er en WordPress cache-plugin, LiteSpeed Cache, WP Rocket, server-cache, Cloudflare, et CDN, nettleser-cache, object cache eller en optimaliseringsplugin. De viktige stiene å ekskludere fra full-side-caching er:
/cart/
/checkout/
/my-account/
/?wc-ajax=
Vær også oppmerksom på cookies som signaliserer en aktiv WooCommerce-økt:
woocommerce_items_in_cart
woocommerce_cart_hash
wp_woocommerce_session_
Når disse cookiene er til stede, er den besøkende i en dynamisk økt, og en full-side-cache bør ikke servere alle den samme statiske siden.
Hva du bør sjekke
- Er checkouten ekskludert fra cache?
- Er handlekurven ekskludert fra cache?
- Er
wc-ajaxekskludert? - Cacher Cloudflare dynamiske sider?
- Er server-cache aktiv selv når pluginen er deaktivert?
- Serverer mobil-cache en egen ødelagt versjon?
- Forsinker JavaScript-minifisering WooCommerce-skriptene?
En cache-plugin kan være av mens server- eller CDN-cache fortsatt påvirker siden, så sjekk alltid hvert lag.
Årsak 3: PHP-advarsler som ødelegger AJAX-responser
WooCommerce-AJAX-responser må være rene. Hvis PHP-advarsler eller -meldinger skrives ut i responsen, ryker JSON-en. En typisk advarsel:
Warning: Undefined array key "redirect_cache"
Dette skjer når egendefinert kode leser en array-nøkkel uten å sjekke at den finnes:
$id = $_SESSION['redirect_cache'];
En tryggere versjon:
$id = isset($_SESSION['redirect_cache']) ? (int) $_SESSION['redirect_cache'] : 0;
Selv en liten advarsel kan forurense en AJAX-respons. På en vanlig side vises advarselen over innholdet; inne i et AJAX-kall kan den gjøre hele responsen ugyldig.
Hva du bør sjekke
Åpne AJAX-responskroppen og se etter PHP-advarsler, -meldinger, deprecation-meldinger, feiloutput fra plugins, HTML før JSON-en, debug-output, gjenglemte var_dump() eller print_r(), eller en utilsiktet echo. Hvis noe av dette dukker opp under checkout-AJAX, fiks kilden og hindre frontend i å vise feil. I produksjon bør debug-output gå til en logg, ikke til besøkende:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors', 0);
Dette erstatter ikke det å rette koden, men det hindrer advarsler i å ødelegge frontend-responser.
Årsak 4: JavaScript-feil på checkout-siden
WooCommerce-checkout lener seg tungt på JavaScript. Hvis et annet skript kaster en feil før checkout-skriptene er ferdige, kan checkouten slutte å oppdatere seg. Vanlige årsaker er en feil i temaskriptet, et egendefinert checkout-skript, ødelagt minifisert JS, forsinkede eller defer-ede WooCommerce-skript, en konflikt med en optimaliseringsplugin, en manglende avhengighet, en jQuery-konflikt, støy fra nettleserutvidelser, eller et tredjeparts sporingsskript.
Hva du bør sjekke
Åpne DevTools og sjekk Console-fanen for røde feil knyttet til:
checkout
wc_checkout_params
update_order_review
jQuery
payment_method
fragments
Ikke alle konsollfeil betyr noe. Noen nettleserutvidelser genererer urelatert støy. For checkout-problemer er Network-fanen som regel mer avslørende enn Console, men JavaScript-feil er fortsatt verdt å gå gjennom.
Årsak 5: Tema- eller malkonflikter
Checkouten kan ryke når et tema overstyrer WooCommerce-maler feil. Se etter utdaterte maloverstyringer, manglende checkout-hooks, en fjernet meldingsseksjon, et egendefinert oppsett som skjuler påkrevde elementer, egendefinert JavaScript som forstyrrer WooCommerce-hendelser, en manglende wp_footer() eller wp_head(), feil skjemamarkup, eller CSS som skjuler betalingsmetoder eller knapper. WooCommerce-maler er avhengige av hooks, så hvis et tema fjerner eller flytter viktige hooks, blir checkouten ustabil.
Hva du bør sjekke
Gå til:
WooCommerce → Status → Maler
Sjekk om noen maler er utdaterte, og undersøk om det aktive temaet har overstyringer inne i:
ditt-tema/woocommerce/
Hvis checkout-maler er overstyrt, sammenlign dem med de gjeldende WooCommerce-versjonene. En rask test er å bytte midlertidig til et standardtema som Storefront og teste checkouten på nytt. Hvis den fungerer med Storefront, ligger problemet sannsynligvis i temaet eller maloverstyringene.
Årsak 6: Pluginkonflikter
Pluginkonflikter er vanlige, men de bør testes metodisk, ikke ved gjetting. Plugins som ofte påvirker checkouten, er betalingsgatewayer, fraktplugins, redigeringsverktøy for checkout-felt, flerspråksplugins, valutavekslere, avgifts- og mva-plugins, sikkerhetsplugins, cache- og optimaliseringsplugins, plugins for egendefinerte kodesnutter, anti-spam-plugins, analyse- og sporingsplugins, og faktura- eller ordreplugins.
Slik tester du trygt
På et staging-nettsted, deaktiver alle ikke-essensielle plugins bortsett fra WooCommerce, og test checkouten. Hvis den fungerer, reaktiver pluginene én etter én til problemet kommer tilbake, og start med de mest sannsynlige:
- Betalingsplugins
- Fraktplugins
- Checkout-felt-plugins
- Cache- og optimaliseringsplugins
- Sikkerhetsplugins
- Egendefinerte kodesnutter
- Sporings- og analyseplugins
Unngå å gjøre dette direkte på en travel live butikk med mindre du ikke har noe annet valg og trafikken er lav.
Årsak 7: Rewrite- eller omdirigeringsregler på servernivå
Noen ganger ryker checkouten fordi WordPress aldri mottar forespørselen riktig, gjennom .htaccess, Nginx, LiteSpeed eller CDN-regler. En rewrite kan ved et uhell fange opp en forespørsel som:
/?wc-ajax=update_order_review
Når det skjer, kan WooCommerce motta en statisk forside, en omdirigering, en 403-side, en bufret HTML-fil, en innloggingsside eller en brannmurmelding, noe som gir evig innlasting selv om WooCommerce i seg selv er i orden. Det var nettopp dette som skjedde i en checkout-sak vi sporet til en .htaccess-rewrite, der en regel for statisk forside fanget opp WooCommerce-AJAX-forespørselen.
Hva du bør sjekke
Gå gjennom .htaccess, Nginx-regler, LiteSpeed-regler, Cloudflare-sideregler, regler i omdirigeringsplugins, server-cache-regler og logger fra sikkerhetsbrannmuren. Vær spesielt forsiktig med alt som berører:
/
/checkout/
/cart/
/my-account/
/?wc-ajax=
En liten regel på servernivå kan ødelegge en stor del av WooCommerce.
Årsak 8: Sikkerhetsbrannmur eller ModSecurity som blokkerer forespørsler
Sikkerhetslag kan blokkere checkout-forespørsler når de ser mistenkelige ut, fordi de forespørslene bærer kundedata, adressefelt, betalingsmetadata, AJAX-payloads, nonce-verdier og dynamiske øktdata. En blokkert forespørsel kan returnere:
403 Forbidden
eller en merkevarebygd sikkerhetsside. Noen ganger returnerer den fortsatt 200 OK med en verifiseringsside, som er enda vanskeligere å oppdage.
Hva du bør sjekke
I Network-fanen, inspiser den feilede forespørselen og se etter status 403, 406 eller 500, brannmur-HTML, en captcha- eller verifiseringsside, eller meldinger som «Access denied» eller «Not acceptable». Hvis du mistenker dette, sjekk brannmurloggene hos hostingleverandøren eller spør leverandøren om ModSecurity blokkerte forespørselen.
Årsak 9: Problemer med tilpasning av checkout-felt
Egendefinerte checkout-felt kan ødelegge checkouten når de legges til feil: påkrevde felt uten validering, ugyldige feltnøkler, usaniterte egendefinerte felt, adressefelt fjernet på feil måte, dårlig omdøpte faktura- eller leveringsfelt, en konflikt med et redigeringsverktøy for checkout-felt, eller JavaScript som forventer et felt som ikke lenger finnes. Å fjerne et felt bør for eksempel gjøres gjennom checkout-felt-hooks, ikke ved å slette markup for hånd:
add_filter('woocommerce_checkout_fields', function($fields) {
unset($fields['billing']['billing_address_2']);
if (isset($fields['billing']['billing_phone'])) {
$fields['billing']['billing_phone']['required'] = true;
}
return $fields;
});
Dette er langt tryggere enn å redigere WooCommerce-kjernefiler eller skjule felt med CSS alene.
Årsak 10: Manglende WooCommerce-sider eller feil sideinnstillinger
WooCommerce er avhengig av bestemte sider for handlekurv, checkout, konto og vilkår. Hvis de mangler eller er feil tilordnet, oppfører checkouten seg uforutsigbart. Sjekk:
WooCommerce → Innstillinger → Avansert
Bekreft at Handlekurv-siden, Checkout-siden, Min konto-siden og siden for vilkår og betingelser (hvis den brukes) er riktig tilordnet. Bekreft også at checkout-siden inneholder riktig WooCommerce checkout-blokk eller shortcode, som avhengig av oppsettet kan være:
[woocommerce_checkout]
eller WooCommerce Checkout-blokken.
Årsak 11: Problemer med REST API eller admin-ajax
WooCommerce og WordPress bruker bakgrunnsforespørsler hele tiden. Hvis REST API- eller AJAX-endepunktene er blokkert, kan handlekurv- og checkout-oppførsel ryke. Sjekk REST API på:
/wp-json/
og AJAX-forespørsler som:
/wp-admin/admin-ajax.php
/?wc-ajax=...
Mulige blokkerere er en sikkerhetsplugin, en brannmur, en serverregel, en feilformet omdirigering, ødelagt SSL, blandet innhold, et cache-lag eller en feil nettsteds-URL. Hvis admin-ajax eller REST API er blokkert, feiler mange WordPress-funksjoner utover checkouten.
Slik feilsøker du innlasting av WooCommerce-checkout ordentlig
Her er en praktisk prosess.
Steg 1: Reproduser problemet
Åpne checkouten i en inkognito-nettleser og kjør hele løypa, mens du følger ordresammendraget:
Legg til produkt → Handlekurv → Checkout → Fyll ut felt → Følg ordresammendraget
Bekreft nøyaktig når spinneren starter.
Steg 2: Åpne DevTools i nettleseren
Gå til nettverksforespørslene:
Network → Fetch/XHR
Last checkouten på nytt og se etter:
?wc-ajax=update_order_review
Steg 3: Sjekk statuskoden
Se etter 200, 302, 403, 404 eller 500. Hver av dem forteller sin egen historie.
Steg 4: Sjekk responsheaderne
Vær oppmerksom på:
Content-Type
Cache-Control
Server
Location
Hvis Content-Type er text/html når JSON forventes, inspiser responskroppen.
Steg 5: Sjekk responskroppen
Se etter en full HTML-side, en PHP-advarsel, en innloggingsside, en sikkerhetsblokkering, en omdirigeringsside, ugyldig JSON eller en bufret forside.
Steg 6: Sjekk konsollen
Se etter relevante JavaScript-feil, og ignorer åpenbar støy fra nettleserutvidelser med mindre den direkte påvirker checkout-skriptene.
Steg 7: Sjekk loggene
Gå gjennom WooCommerce-loggene, PHP-feilloggen, WordPress-debugloggen, serverfeilloggen og eventuell brannmur- eller ModSecurity-logg.
Steg 8: Test tema- og pluginkonflikter
Bruk staging der det er mulig. Bytt tema og reduser antall plugins for å isolere problemet.
Hvordan en sunn WooCommerce checkout-forespørsel bør se ut
En sunn checkout-AJAX-forespørsel bør fullføres raskt, returnere riktig responsformat, unngå å returnere full HTML uventet, ikke inneholde PHP-advarsler, ikke være bufret feil, ikke blokkeres av en brannmur, utløse oppdatering av ordresammendraget, tillate valg av betalingsmetode, og la bestillingen gå videre. Forespørsler trenger ikke se identiske ut på tvers av butikker, men responsen må være gyldig for at WooCommerce skal kunne behandle den.
Hva du ikke bør gjøre
Når checkouten henger i innlasting, unngå disse:
- Å bygge checkouten på nytt med en gang
- Å redigere WooCommerce-kjernefiler
- Å skjule feil uten å sjekke årsaken
- Å deaktivere tilfeldige plugins på en live butikk i rushtrafikk
- Å anta at betalingsgatewayen er årsaken
- Å tømme cache gjentatte ganger uten å sjekke Network-responsen
- Å bytte tema før du sjekker AJAX
- Å legge til flere kodesnutter for å «tvinge» checkouten til å fungere
- Å ignorere PHP-advarsler fordi «siden laster jo fortsatt»
- Å endre
.htaccessuten å teste dynamiske forespørsler
Den raskeste løsningen kommer som regel fra å identifisere den nøyaktige forespørselen som feiler.
Når du bør be om hjelp
Det er verdt å hente inn ekspertise når:
- Checkouten fortsetter å spinne etter grunnleggende feilsøking
update_order_reviewreturnerer HTML i stedet for JSON- Betalingsmetoder forsvinner
- «Fullfør bestilling»-knappen ikke responderer
- Checkouten bare fungerer av og til
- PHP-advarsler dukker opp i checkouten
- Checkouten ryker etter at AI-generert kode er lagt til
- Cache-ekskluderinger ikke løser problemet
- Testing av tema- og pluginkonflikter ikke avdekker årsaken
- Serverregler eller brannmuroppførsel ser mistenkelig ut
Checkout-problemer er som regel fiksbare, men gjetting kaster bort tid og kan skape nye problemer.
Avsluttende tanker
En WooCommerce-checkout som henger i innlasting, er sjelden et mysterium når du følger forespørselsstien. Trikset er å slutte å stirre på spinneren og begynne å sjekke hva serveren faktisk returnerer til WooCommerce. I mange tilfeller er problemet ikke WooCommerce selv, men noe rundt det: caching, server-rewrites, ugyldig PHP-output, sikkerhetsregler, maloverstyringer, JavaScript-konflikter eller plugin-oppførsel. Den tryggeste løsningen er den som gjenoppretter WooCommerce sin native flyt i stedet for å erstatte den unødvendig.
Hvis WooCommerce-checkouten din henger i innlasting, kan Webnorly gå gjennom problemet, finne forespørselen som feiler, og gjenopprette checkout-flyten trygt. Send oss saken, så sporer vi den fra spinneren tilbake til forespørselen som faktisk ryker.
Relaterte artikler
Sjekkliste for gjennomgang av AI-generert WordPress-kode
AI kan generere WordPress-kode på sekunder, men en kodesnutt som ser riktig ut, kan likevel bryte checkout, omdirigeringer, AJAX eller plugin-kompatibilitet. Denne sjekklisten i 20 punkter gir deg en praktisk måte å gjennomgå AI-generert kode på før den berører functions.php, .htaccess eller WooCommerce, og dekker plassering, hooks, sanitering, escaping, sikkerhet, ytelse og en plan for tilbakerulling.
Les artikkelSlik konverterer du statisk HTML til et WordPress-tema uten å ødelegge nettstedet
AI kan generere et vakkert statisk HTML-nettsted på minutter, men å tvinge det inn i WordPress med filopplastinger og .htaccess-rewrites ødelegger ruting, plugins, skjemaer og checkout. Denne guiden i 18 steg viser hvordan du konverterer statisk HTML til et ordentlig WordPress-tema, med header, footer, enqueue-ede ressurser, menyer og native WooCommerce intakt.
Les artikkelFør du limer AI-generert PHP inn i WordPress, sjekk disse tingene
AI kan skrive en WordPress PHP-kodesnutt på sekunder, men limt inn uten gjennomgang kan den utløse advarsler, bryte checkout-AJAX, gi hvit skjerm eller skape omdirigeringsløkker. Her er de 14 tingene du bør sjekke før du limer AI-generert PHP inn i WordPress, fra variabelsjekker og sanitering til hooks, nonces og en tryggere plasseringsstrategi, med før-og-etter-kode.
Les artikkel