admin-ajax-Fehler — die Datei, die niemand kennt und alle brauchen.
In der Entwicklerkonsole taucht sie rot auf, in Tempo-Analysen steht sie ganz oben, und beim Speichern meldet ein Plugin plötzlich einen Fehler: admin-ajax.php. Diese eine Datei wickelt einen großen Teil dessen ab, was WordPress im Hintergrund erledigt.
Über admin-ajax.php laufen Hintergrundanfragen von WordPress und seinen Plugins — Filter im Shop, Formulare, automatisches Speichern, Ladeanzeigen. Ein Fehler dort ist kein eigenes Problem, sondern ein Symptom. Der Code sagt dir, wo du suchst: 400 falsche oder fehlende Angaben, 403 Sicherheitsprüfung fehlgeschlagen oder blockiert, 500 PHP-Fehler im Plugin, 0 die Funktion existiert nicht.
Was die Datei tut.
Wenn eine Seite etwas nachladen oder speichern will, ohne sich komplett neu aufzubauen, schickt sie eine Anfrage an admin-ajax.php. Diese Datei nimmt entgegen, welche Funktion gemeint ist, und ruft sie auf. Das passiert überall: beim automatischen Speichern im Editor, bei Produktfiltern im Shop, beim Absenden vieler Formulare, beim Nachladen von Beiträgen, bei Warenkorb-Aktualisierungen, bei Ladebalken in Backend-Werkzeugen.
Wichtig für die Fehlersuche: Die Datei selbst ist praktisch nie kaputt. Sie ist nur der Durchgang. Was scheitert, ist die dahinterliegende Funktion eines Plugins oder Themes.
Die Fehlercodes einordnen.
| Code | Bedeutung | Wo du suchst |
|---|---|---|
| 400 | Anfrage unvollständig oder ungültig | Plugin veraltet, Konflikt, abgelaufener Schlüssel |
| 403 | Zugriff verweigert | Sicherheits-Plugin, Firewall, Rechte, Prüfschlüssel |
| 500 | PHP-Fehler beim Ausführen | Protokoll lesen, Plugin eingrenzen |
| 502 / 504 | Zeitüberschreitung | Funktion dauert zu lange, Serverlimit |
| 0 als Antwort | Funktion nicht registriert | Plugin deaktiviert oder Tippfehler im Code |
| -1 als Antwort | Sicherheitsprüfung fehlgeschlagen | Schlüssel abgelaufen, meist Caching |
Die letzten beiden sind Besonderheiten: Hier ist der Statuscode in Ordnung, aber die Antwort besteht nur aus einer Ziffer. Das sieht im Netzwerk-Reiter harmlos aus, bedeutet aber, dass die Anfrage inhaltlich abgelehnt wurde.
Verursacher finden.
Mit F12 die Entwicklerwerkzeuge öffnen und in den Reiter Netzwerk wechseln. Die fehlgeschlagene Anfrage anklicken und die gesendeten Daten ansehen: Dort steht ein Eintrag namens action. Sein Wert nennt fast immer das Plugin — etwa mit dessen Namenskürzel am Anfang. Damit hast du den Verdächtigen, ohne alles deaktivieren zu müssen.
Sagt der Name nichts, hilft die klassische Eingrenzung: alle Plugins aus, prüfen, einzeln wieder an (WordPress-Fehler beheben). Mach das in einer Kopie, wenn die Website produktiv läuft (Staging einrichten).
403: Sicherheitsprüfung und Sperren.
Drei typische Gründe. Erstens ein Sicherheits-Plugin oder eine Firewall, die Anfragen an diese Datei grundsätzlich einschränkt — manche Anleitungen empfehlen das, weil die Datei auch für Überlastungsangriffe genutzt wird. Zweitens eine fehlgeschlagene Prüfung: WordPress sichert solche Anfragen mit einem kurzlebigen Schlüssel ab; stimmt er nicht, wird abgelehnt. Drittens fehlende Rechte: Die aufgerufene Funktion ist nur für angemeldete Benutzer mit bestimmter Rolle freigegeben, die Anfrage kommt aber von einem Gast (Rollen und Rechte).
Prüfe in dieser Reihenfolge: Sicherheits-Plugin testweise abschalten, Hoster nach Firewall-Regeln fragen, dann die Schlüsselfrage (siehe unten).
500: PHP-Fehler.
Ein Serverfehler bedeutet, dass die Funktion des Plugins beim Ausführen abgebrochen ist. Die Meldung dazu steht nicht im Browser, sondern im Fehlerprotokoll. Schalte die Protokollierung ein und wiederhole die Aktion — im Protokoll stehen dann Datei und Zeile (Debug-Modus aktivieren). Häufige Auslöser sind ein Plugin, das nicht zur aktuellen PHP-Version passt (Fehler nach PHP-Update), und ein zu niedriges Speicherlimit bei Funktionen, die viele Daten verarbeiten (Speicherlimit erhöhen).
Caching und abgelaufene Schlüssel.
Der unterschätzte Klassiker. Die Prüfschlüssel, mit denen WordPress solche Anfragen absichert, gelten nur begrenzte Zeit. Wird eine Seite zwischengespeichert und einem Besucher Stunden später mit dem alten Schlüssel ausgeliefert, scheitert jede Hintergrundanfragen von dieser Seite. Symptome: Der Warenkorb aktualisiert sich nicht, ein Filter reagiert nicht, ein Formular meldet einen Fehler — aber nur für Besucher, nicht für dich als angemeldeten Benutzer.
Die Lösung liegt beim Caching: Seiten mit solchen Funktionen dürfen nicht oder nur kurz zwischengespeichert werden, und gute Plugins erneuern den Schlüssel dynamisch. Prüfen lässt sich das im privaten Fenster (Cache leeren).
Wenn sie die Website bremst.
In Tempo-Analysen steht admin-ajax.php oft ganz oben mit langen Antwortzeiten. Das heißt nicht, dass die Datei langsam ist, sondern dass eine dahinterliegende Funktion lange braucht. Typische Verursacher sind Statistik-Plugins, die jeden Aufruf mitschreiben, Chat-Fenster, die im Sekundentakt nachfragen, und Shop-Funktionen, die bei jedem Seitenaufruf den Warenkorb neu berechnen.
Der Weg zur Lösung führt über die Messung: Das Plugin Query Monitor zeigt, welche Funktion wie lange dauert und welches Plugin sie angemeldet hat. Danach entscheidest du, ob die Funktion gebraucht wird, seltener laufen kann oder ersetzt gehört (WordPress langsam, Backend langsam).
Heartbeat entlasten.
Ein großer Teil der Anfragen an diese Datei kommt von der Heartbeat-Funktion: Sie meldet sich im Editor alle paar Sekunden, damit automatisches Speichern und die Sperre bei gleichzeitiger Bearbeitung funktionieren. Bei mehreren offenen Tabs und schwachem Hosting summiert sich das spürbar. Den Takt zu verlangsamen entlastet, ohne wichtige Funktionen zu verlieren.
<?php
// Statt alle 15 Sekunden nur noch alle 60 Sekunden.
add_filter( 'heartbeat_settings', function ( $settings ) {
$settings['interval'] = 60;
return $settings;
} );Ganz abschalten sollte man Heartbeat im Editor nicht — sonst fehlen automatisches Speichern und die Warnung, wenn zwei Personen denselben Beitrag bearbeiten.
Abgrenzung zur REST-Schnittstelle.
WordPress hat zwei Wege für Hintergrundanfragen. Der ältere ist admin-ajax.php, der neuere die REST-Schnittstelle unter wp-json. Der Block-Editor und moderne Plugins nutzen die REST-Schnittstelle, viele ältere Plugins weiterhin den alten Weg. Im Netzwerk-Reiter siehst du an der Adresse sofort, um welchen es geht — und das entscheidet, wo du weitersuchst (REST-API funktioniert nicht). Beide können unabhängig voneinander blockiert sein.
Wenn du nicht weiterkommst.
Wenn eine Funktion im Backend oder im Shop still scheitert und du nur einen roten Eintrag in der Konsole siehst, ordne ich das zu. Ich finde die Ursache, behebe sie und erkläre dir, was passiert ist: WordPress-Hilfe, bei einem Totalausfall der Notfall-Support. Damit es gar nicht erst so weit kommt: WordPress-Wartung.
Ursache finden, Website wieder zum Laufen bringen, kurzer Bericht — meist am selben Tag.
Für Anpassungen, Fehlerbehebung und Beratung nach Aufwand, abgerechnet in 15-Minuten-Schritten.
Updates, Backups, Sicherheitscheck, Monitoring — Kleinigkeiten inklusive.
Orientierungswerte, keine Fixpreise — nach einem kurzen Gespräch bekommst du ein Festpreisangebot.
Wer hilft.
Ich bin Manuel Killert, WordPress-Entwickler aus Quakenbrück. Seit 2020 baue und betreue ich WordPress-Websites — für Handwerksbetriebe, Industrie, Gastronomie, Start-ups und Vereine —, entwickle eigene Plugins und unterrichte WordPress als Dozent an der KW Design Akademie. Das heißt: Ich kenne die typischen Fehler nicht nur aus Foren, sondern aus eigenen Projekten, und ich kann sie so erklären, dass du sie beim nächsten Mal selbst erkennst. Du erreichst mich direkt, ohne Ticketsystem.
Echte Projekte — live ansehen.
WordPress-Websites, die ich gebaut habe oder laufend betreue.

Markenfest
Stärkerer Online-Shop — Webdesign, Content und individuelle Shop-Funktionen.
Website ansehen ↗
KT Bodenteam
Professioneller Auftritt für einen Bodenleger — Vorher-Nachher-Slider und regionale SEO.
Website ansehen ↗
Potassco Solutions
Klare Website für ein KI-Unternehmen, die komplexe Technologie verständlich macht.
Website ansehen ↗FAQ — admin-ajax-Fehler.
Was ist admin-ajax.php in WordPress?
Die Datei, über die WordPress und seine Plugins Hintergrundanfragen abwickeln — automatisches Speichern, Produktfilter, Formulare, Ladeanzeigen. Sie ist nur der Durchgang; was scheitert, ist die dahinterliegende Funktion.
Was bedeutet ein 403 bei admin-ajax.php?
Zugriff verweigert. Meist blockiert ein Sicherheits-Plugin oder eine Firewall die Anfrage, die Sicherheitsprüfung mit dem kurzlebigen Schlüssel schlägt fehl, oder die Funktion ist für die aufrufende Rolle nicht freigegeben.
Wie finde ich heraus, welches Plugin den Fehler auslöst?
In den Entwicklerwerkzeugen unter Netzwerk die fehlgeschlagene Anfrage anklicken und die gesendeten Daten ansehen. Der Eintrag action nennt fast immer das Plugin.
Warum funktioniert etwas nur für Besucher nicht?
Meist wegen Caching: Eine zwischengespeicherte Seite wird mit einem abgelaufenen Prüfschlüssel ausgeliefert, sodass jede Hintergrundanfrage abgelehnt wird. Als angemeldeter Benutzer bekommst du die Seite ungecacht.
Warum steht admin-ajax.php in Tempo-Analysen ganz oben?
Weil eine dahinterliegende Funktion lange braucht — oft Statistik-Plugins, Chat-Fenster oder Shop-Funktionen. Query Monitor zeigt, welche Funktion wie lange dauert und wer sie angemeldet hat.
Was ist der Unterschied zur REST-API?
admin-ajax.php ist der ältere Weg für Hintergrundanfragen, die REST-Schnittstelle unter wp-json der neuere. Moderne Plugins und der Block-Editor nutzen die REST-Schnittstelle; beide können unabhängig blockiert sein.
Das bin ich – rechts im BildErzähl mir, was nicht funktioniert.
Domain und eine kurze Beschreibung reichen — du bekommst eine ehrliche Einschätzung, was los ist und was die Behebung kostet.
Antwort meist innerhalb von 24 Stunden · hallo@manuelkillert.de