Dokumentation · Technische Dokumentation
AJAX-Aktionen
Dieses Dokument listet die AJAX-Endpunkte auf, die vom
ADP Car Market Hub-Plugin über admin-ajax.php registriert wurden, einschliesslich des
erwarteten Nonce, der WordPress-Berechtigung, die den jeweiligen Handler schützt,
und einer kurzen Beschreibung der Parameter und der Antwort.
Wann Sie dieses Dokument verwenden sollten
Lesen Sie dieses Dokument, wenn Sie Folgendes tun müssen:
- Verstehen, wie das Frontend ohne vollständiges Neuladen der Seite mit dem Plugin interagiert (Modellliste, Probefahrt-Verfügbarkeit, Suchabo).
- Nachverfolgen, welche Admin-Schaltfläche welchen Hintergrundjob auslöst.
- Eine Integration oder Tests für eine bestimmte AJAX-Aktion durchführen.
- Das Sicherheitsmodell (Berechtigung + Nonce) eines Admin-AJAX-Handlers überprüfen.
Für HTTP-REST-Endpunkte siehe REST API Endpoints.
Übersicht
Alle Aktionen werden über die standardmässigen Hooks wp_ajax_<action>
(für angemeldete Benutzer) und, falls zutreffend, wp_ajax_nopriv_<action>
(für anonyme Besucher) von WordPress registriert und über
wp-admin/admin-ajax.php bereitgestellt.
Das Plugin folgt dem Standardmuster:
- Auslesen des Query-/POST-Parameters
action. - Überprüfen des Request-Nonce mit
check_ajax_referer( '<action>', 'nonce' ). - Überprüfen der Benutzerberechtigung (nur bei Admin-Aktionen).
- Bereinigen der Eingaben.
- Rückgabe von JSON über
wp_send_json_success()oderwp_send_json_error().
Die Berechtigung, die für fast alle reinen Admin-Handler verwendet wird,
ist manage_as24_imports (die Konstante Plugin::CAP_MANAGE). Siehe
Security And Capabilities für die
vollständige Berechtigungsübersicht.
Öffentliche (Frontend-) AJAX-Aktionen
Diese Aktionen sind sowohl mit wp_ajax_ als auch mit
wp_ajax_nopriv_ registriert, damit anonyme Besucher sie aufrufen können.
as24ci_get_models
Gibt die Liste der Fahrzeugmodelle für eine bestimmte Marke zurück, die von den kaskadierenden Marken-/Modell-Dropdowns im Suchfilter verwendet wird.
- Methode: GET.
- Nonce:
as24ci_get_models(Parameternamenonce). - Parameter:
make(String). - Antwort:
{ "success": true, "data": { "models": [...], "cached": bool } }. - Caching: Die Ergebnisse werden in Transients gespeichert, die mit dem normalisierten Markenwert für 10 Minuten indiziert sind. Der Cache wird nach Abschluss von Importen automatisch geleert.
as24ci_get_test_drive_slots
Gibt die verfügbaren Probefahrt-Zeitfenster für ein bestimmtes Kalenderdatum zurück.
- Methode: GET.
- Nonce:
as24ci_test_drive_slots(Parameternamenonce). - Parameter:
dateim FormatY-m-d. - Antwort:
{ "success": true, "data": { "slots": ["09:00", "09:30", ...] } }. Für ungültige Daten, blockierte Tage, falsche Wochentage oder in der Vergangenheit liegende Daten wird ein leeres Array zurückgegeben.
as24ci_search_agent_subscribe
Erstellt ein Suchabo, damit der Besucher E-Mail-Benachrichtigungen erhält, wenn passende Fahrzeuge importiert werden.
- Methode: POST.
- Nonce:
as24ci_search_agent(Parameternamenonce). - Parameter:
emailplus die gespeicherten Suchfeldercriteria. - Antwort: JSON-Erfolgs-/Fehler-Umschlag.
Admin-AJAX-Aktionen
Alle Admin-Aktionen erfordern die Berechtigung manage_as24_imports,
sofern nicht anders angegeben. Aufrufe ohne diese Berechtigung geben HTTP
403 mit wp_send_json_error() zurück. Aufrufe ohne gültigen Nonce werden
von check_ajax_referer() abgewiesen.
Import- und Queue-Trigger
| Aktion | Nonce | Zweck |
|---|---|---|
as24ci_trigger_import_now | as24ci_trigger_import_now | Führt den standardmässigen geplanten Import bei Bedarf aus. Gibt dieselben Nutzdaten success, message und counts zurück wie der REST-Endpunkt für den Cron-Import. Gibt HTTP 429 zurück, wenn bereits ein Import läuft. |
as24ci_trigger_image_queue_now | as24ci_trigger_image_queue_now | Verarbeitet einen Batch ausstehender Bilder aus der verzögerten Bildwarteschlange. |
as24ci_clear_image_queue | as24ci_clear_image_queue | Löscht alle ausstehenden Bilder aus der Warteschlange, ohne sie zu importieren. |
as24ci_trigger_ai_queue_now | as24ci_trigger_ai_queue_now | Verarbeitet einen Batch ausstehender AI Assistant-Generierungen. Gibt HTTP 400 zurück, wenn die AI Assistant-Funktion deaktiviert ist. |
Batch-Import-Assistent
Der Batch-Assistent ermöglicht es Administratoren, eine Reihe von Listing-IDs in kleinen Schritten zu importieren, um Timeouts zu vermeiden.
| Aktion | Nonce | Zweck |
|---|---|---|
as24ci_batch_preflight | as24ci_batch_wizard (Options::BATCH_NONCE_ACTION) | Validiert die Konfiguration, ruft Inserate für die konfigurierten Garagen ab und bereitet einen Job vor. Gibt HTTP 404 zurück, wenn keine Inserate gefunden werden, und 400, wenn keine Seller-IDs konfiguriert sind. |
as24ci_batch_step | as24ci_batch_wizard | Verarbeitet einen Schritt des aktiven Batch-Jobs. |
as24ci_batch_abort | as24ci_batch_wizard | bricht einen laufenden Batch-Job ab. |
as24ci_start_import_job | as24ci_import_job | Startet einen Import-Job pro Inserat für eine manuell bereitgestellte Liste von listing_ids. |
as24ci_step_import_job | as24ci_import_job | Verarbeitet den nächsten Schritt eines aktiven Import-Jobs pro Inserat. |
Lead-Management
| Aktion | Nonce | Zweck |
|---|---|---|
as24ci_update_lead_status | as24ci_update_lead_status | Aktualisiert den Workflow-Status eines Lead-Beitrags (lead_id, status). Gibt einen Fehler zurück, wenn die Parameter fehlen oder die Aktualisierung fehlschlägt. |
Analytics
| Aktion | Nonce | Zweck |
|---|---|---|
as24ci_purge_analytics | as24ci_purge_analytics | Löscht die gesammelten Analytics-Daten bei Bedarf. Wird für das Audit protokolliert. |
AI Assistant
| Aktion | Nonce | Zweck |
|---|---|---|
as24ci_generate_ai_assistant | as24ci_ai_generate | Generiert KI-gestützte Textinhalte für einen Fahrzeug-Beitrag. |
Eine separate Nicht-AJAX-Admin-Aktion (?as24ci_action=manual_ai_generate)
stellt einen manuellen Einmal-Generierungs-Workflow bereit, der durch einen
beitragsspezifischen Nonce (as24ci_manual_ai_generate_<post_id>) und die Berechtigung edit_post
für diesen spezifischen Beitrag geschützt ist.
Support-Tab
Der Admin-Tab Hilfe & Support stellt drei AJAX-Aktionen bereit, die jeweils
durch manage_as24_imports und einen dedizierten Nonce geschützt sind:
| Aktion | Nonce |
|---|---|
as24ci_ai_support_chat | as24ci_ai_support_chat |
as24ci_contact_support | as24ci_contact_support |
as24ci_ai_kb_maintenance | as24ci_ai_kb_maintenance |
Content Studio
Registriert durch AS24CI\Content_Studio_Admin_Worker
(includes/class-as24ci-content-studio-admin-worker.php). Beide sind
nur für angemeldete Benutzer, geschützt durch manage_as24_imports
(Plugin::CAP_MANAGE) und einen dedizierten Nonce.
| Aktion | Nonce | Zweck |
|---|---|---|
as24ci_content_studio_poll | as24ci_content_studio_poll (Parameter nonce) | Fragt den Status von bis zu 10 Content Studio-Generierungsjobs ab, damit sich die Admin-UI ohne Neuladen aktualisieren kann. |
as24ci_content_studio_verify_key | as24ci_content_studio_verify_key (Parameter nonce) | Überprüft den konfigurierten Google-API-Schlüssel, indem die verfügbaren Text- (und Test-Video-) Modelle aufgelistet werden. Gibt 400/403 zurück, wenn der Schlüssel fehlt oder Content Studio nicht lizenziert ist. |
Verbindungsseite
Registriert durch AS24CI\Admin_Tab_Universal_Import
(includes/admin/class-as24ci-admin-tab-universal-import.php:30).
Nur für angemeldete Benutzer, geschützt durch manage_as24_imports.
| Aktion | Nonce | Zweck |
|---|---|---|
as24ci_uimp_refresh_totals | as24ci_uimp_refresh (Parameter nonce) | Aktualisiert die Zahl der "beim Anbieter verfügbaren" Fahrzeuge für jede verbundene Live-Quelle und rendert die KPI-Karten / die quellenspezifische Übersicht auf der Verbindungsseite neu. Wird durch ein kurzes Transient gedrosselt, sodass ein echter Abruf beim Anbieter höchstens einmal alle paar Minuten stattfindet. |
Mitbewerber-Beobachter (entfernt)
Die Funktion "Mitbewerber-Beobachter" wurde entfernt. Es gibt keine aktive AJAX-Aktion zum Aktualisieren von Mitbewerberpreisen; der Marktpreisvergleich wird über das Market Hub / die Hub-API bereitgestellt.
Aufrufen einer AJAX-Aktion
Es gelten die standardmässigen WordPress-Konventionen. Vom Frontend aus:
POST /wp-admin/admin-ajax.php
Content-Type: application/x-www-form-urlencoded
action=as24ci_get_models&nonce=<wp_create_nonce('as24ci_get_models')>&make=Audi
Die in die Warteschlange eingereihten Skripte des Plugins erhalten die korrekten Nonces
bereits über wp_localize_script() / wp_add_inline_script(). Wenn Sie eine Aktion
aus einer benutzerdefinierten Integration aufrufen, generieren Sie den Nonce
serverseitig und übergeben Sie ihn an Ihr Skript.
Betriebliche Hinweise
- Alle nicht-öffentlichen Aktionen geben HTTP
403mit{ "success": false, "data": { "message": "Permission denied." } }zurück, wenn die Berechtigungsprüfung fehlschlägt. - Nonce-Fehler werden durch
check_ajax_referer()behandelt und führen zu einem403mit der standardmässigen WordPress Nonce-Fehlermeldung. - Lang laufende Admin-Handler (Importe, Warteschlangenverarbeitung) sind so konzipiert, dass sie schnell antworten; schwerere Arbeiten laufen über den Scheduler und die Warteschlange. Siehe Cron-Events und Scheduler und Bild-Importer und Warteschlange.
- Der Modelllisten-Cache wird von angemeldeten und anonymen Besuchern gemeinsam genutzt; eine einzige Bereinigung zum Importzeitpunkt hält beide Zielgruppen konsistent.
- Frontend-Aktionen vermeiden bewusst die Verwendung von Benutzerberechtigungen, damit anonyme Besucher den Suchfilter und die Probefahrtbuchung nutzen können. Die Authentifizierung basiert auf dem aktionsspezifischen Nonce.
Fehlerbehebung
-1oder0Antwort-Body – klassische WordPress AJAX-Fehlermodi. Überprüfen Sie den Netzwerk-Tab des Browsers auf den Antwortcode:-1bedeutet in der Regel ein ungültiges Nonce,0bedeutet in der Regel einen nicht registrierten Aktionsnamen (Gross-/Kleinschreibung beachten).Permission denied.(HTTP 403) – dem aktuellen Benutzer fehlt die erforderliche Berechtigung. Überprüfen Sie, ob der Benutzer die Berechtigungmanage_as24_importsoder eine Rolle besitzt, die diese enthält.- Leere Modellliste beim Aufruf von
as24ci_get_models– entweder wurden keine Modelle für die angegebene Marke importiert oder der Parameter für die Marke ist leer / kein bekannter Taxonomie-Begriff. No seller IDs configured.vom Batch-Assistenten – öffnen Sie den API-Tab und fügen Sie mindestens eine Seller ID hinzu, bevor Sie den Vorgang erneut ausführen.- Veraltete Modellliste nach einem Import – rufen Sie
Ajax::clear_models_cache()auf (der Importer macht dies bereits bei jedem erfolgreichen Durchlauf); überprüfen Sie den Transient-Speicher, falls Ihr Object-Cache-Plugin Transients überschreibt.