Documentación · Documentación técnica

Acciones AJAX

Este documento enumera los endpoints AJAX registrados por el plugin ADP Car Market Hub a través de admin-ajax.php, incluyendo el nonce esperado, la capacidad de WordPress que protege cada controlador y una breve descripción de los parámetros y la respuesta.

Cuándo utilizar este documento

Lea este documento si necesita:

  • Comprender cómo interactúa el frontend con el plugin sin recargas completas de la página (lista de modelos, disponibilidad de pruebas de conducción, suscripción al agente de búsqueda).
  • Rastrear qué botón de administración activa cada tarea en segundo plano.
  • Integrar o realizar pruebas con una acción AJAX específica.
  • Auditar el modelo de seguridad (capacidad + nonce) de un controlador AJAX de administración.

Para los endpoints REST HTTP, consulte Endpoints de la API REST.

Descripción general

Todas las acciones se registran a través de los ganchos estándar de WordPress wp_ajax_<action> (usuarios conectados) y, cuando corresponda, wp_ajax_nopriv_<action> (visitantes anónimos), y se sirven desde wp-admin/admin-ajax.php.

El plugin sigue el patrón estándar:

  1. Leer el parámetro de consulta/POST action.
  2. Verificar el nonce de la solicitud con check_ajax_referer( '<action>', 'nonce' ).
  3. Verificar la capacidad del usuario (solo acciones de administración).
  4. Desinfectar las entradas.
  5. Devolver JSON a través de wp_send_json_success() o wp_send_json_error().

La capacidad utilizada para casi todos los controladores exclusivos de administración es manage_as24_imports (la constante Plugin::CAP_MANAGE). Consulte Seguridad y capacidades para ver el mapa completo de capacidades.

Acciones AJAX públicas (frontend)

Estas acciones se registran tanto con wp_ajax_ como con wp_ajax_nopriv_ para que los visitantes anónimos puedan llamarlas.

as24ci_get_models

Devuelve la lista de modelos de vehículos para una marca determinada, utilizada por los desplegables en cascada de marca/modelo en el filtro de búsqueda.

  • Método: GET.
  • Nonce: as24ci_get_models (nombre del parámetro nonce).
  • Parámetros: make (cadena de texto).
  • Respuesta: { "success": true, "data": { "models": [...], "cached": bool } }.
  • Caché: Los resultados se almacenan en caché en transients identificados por el valor de marca normalizado durante 10 minutos. La caché se purga automáticamente después de que se completen las importaciones.

as24ci_get_test_drive_slots

Devuelve las franjas horarias disponibles para pruebas de conducción para una fecha de calendario determinada.

  • Método: GET.
  • Nonce: as24ci_test_drive_slots (nombre del parámetro nonce).
  • Parámetros: date en formato Y-m-d.
  • Respuesta: { "success": true, "data": { "slots": ["09:00", "09:30", ...] } }. Se devuelve un array vacío para fechas no válidas, días de exclusión, días de la semana incorrectos o fechas pasadas.

as24ci_search_agent_subscribe

Crea una suscripción de agente de búsqueda para que el visitante reciba notificaciones por correo electrónico cuando se importen vehículos que coincidan.

  • Método: POST.
  • Nonce: as24ci_search_agent (nombre del parámetro nonce).
  • Parámetros: email más los campos de búsqueda guardada criteria.
  • Respuesta: Envoltorio JSON de éxito/error.

Acciones AJAX de administración

Todas las acciones de administración requieren la capacidad manage_as24_imports a menos que se indique lo contrario. Las llamadas sin la capacidad devuelven HTTP 403 con wp_send_json_error(). Las llamadas sin un nonce válido son rechazadas por check_ajax_referer().

Activadores de importación y cola

AcciónNoncePropósito
as24ci_trigger_import_nowas24ci_trigger_import_nowEjecuta la importación programada estándar bajo demanda. Devuelve la misma carga útil success, message y counts que el endpoint REST de importación por cron. Devuelve HTTP 429 cuando ya se está ejecutando una importación.
as24ci_trigger_image_queue_nowas24ci_trigger_image_queue_nowProcesa un lote de imágenes pendientes de la cola de imágenes diferidas.
as24ci_clear_image_queueas24ci_clear_image_queueBorra todas las imágenes pendientes de la cola sin importarlas.
as24ci_trigger_ai_queue_nowas24ci_trigger_ai_queue_nowProcesa un lote de generaciones pendientes del AI Assistant. Devuelve HTTP 400 cuando la función AI Assistant está desactivada.

Asistente de importación por lotes

El asistente por lotes permite a los administradores importar un conjunto de Listing IDs en pequeños pasos para evitar tiempos de espera (timeouts).

AcciónNoncePropósito
as24ci_batch_preflightas24ci_batch_wizard (Options::BATCH_NONCE_ACTION)Valida la configuración, obtiene los anuncios para los vendedores configurados y prepara una tarea. Devuelve HTTP 404 cuando no se encuentran anuncios, 400 cuando no hay Seller IDs configurados.
as24ci_batch_stepas24ci_batch_wizardProcesa un paso de la tarea por lotes activa.
as24ci_batch_abortas24ci_batch_wizardAborta una tarea por lotes en curso.
as24ci_start_import_jobas24ci_import_jobInicia una tarea de importación por anuncio para una lista de listing_ids proporcionada manualmente.
as24ci_step_import_jobas24ci_import_jobProcesa el siguiente paso de una tarea de importación por anuncio activa.

Gestión de leads

AcciónNoncePropósito
as24ci_update_lead_statusas24ci_update_lead_statusActualiza el estado del flujo de trabajo de una publicación de lead (lead_id, status). Devuelve un error cuando faltan los parámetros o falla la actualización.

Analytics

AcciónNoncePropósito
as24ci_purge_analyticsas24ci_purge_analyticsTrunca los datos de analítica recopilados bajo demanda. Se registra para auditoría.

AI Assistant

AcciónNoncePropósito
as24ci_generate_ai_assistantas24ci_ai_generateGenera contenido de texto asistido por IA para una publicación de vehículo.

Una acción de administración independiente que no es AJAX (?as24ci_action=manual_ai_generate) expone un flujo de generación manual de un solo uso protegido por un nonce por publicación (as24ci_manual_ai_generate_<post_id>) y la capacidad edit_post para esa publicación específica.

Pestaña de soporte

La pestaña de administración Help & Support expone tres acciones AJAX, cada una protegida por manage_as24_imports y un nonce dedicado:

AcciónNonce
as24ci_ai_support_chatas24ci_ai_support_chat
as24ci_contact_supportas24ci_contact_support
as24ci_ai_kb_maintenanceas24ci_ai_kb_maintenance

Observador de competidores (eliminado)

La función Competitor Watcher ha sido eliminada. No hay ninguna acción AJAX activa para actualizar los precios de la competencia; la comparación de precios de mercado la proporciona Market Hub / Hub API.

Llamar a una acción AJAX

Se aplican las convenciones estándar de WordPress. Desde el frontend:

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

Los scripts en cola del plugin ya reciben los nonces correctos a través de wp_localize_script() / wp_add_inline_script(). Al llamar a una acción desde una integración personalizada, genere el nonce en el lado del servidor y páselo a su script.

Notas operativas

  • Todas las acciones no públicas devuelven HTTP 403 con { "success": false, "data": { "message": "Permission denied." } } cuando falla la comprobación de capacidad.
  • Los fallos de nonce son gestionados por check_ajax_referer() y dan como resultado un 403 con la respuesta de error de nonce estándar de WordPress.
  • Los controladores de administración de larga ejecución (importaciones, procesamiento de colas) están diseñados para responder con prontitud; el trabajo más pesado se ejecuta a través del programador y la cola. Consulte Eventos de Cron y programador y Cola e importador de imágenes.
  • La caché de la lista de modelos se comparte entre los visitantes conectados y los anónimos; una única purga en el momento de la importación mantiene a ambas audiencias coherentes.
  • Las acciones del frontend evitan intencionadamente el uso de capacidades de usuario para que los visitantes anónimos puedan utilizar el filtro de búsqueda y la reserva de pruebas de conducción. La autenticación se basa en el nonce específico de la acción.

Resolución de problemas

  • Cuerpo de respuesta -1 o 0 — modos clásicos de fallo de AJAX en WordPress. Compruebe la pestaña de red del navegador para ver el código de respuesta: -1 normalmente significa un nonce no válido, 0 normalmente significa un nombre de acción no registrado (las mayúsculas y minúsculas importan).
  • Permission denied. (HTTP 403) — el usuario actual carece de la capacidad requerida. Verifique que el usuario tenga la capacidad manage_as24_imports o un rol que la incluya.
  • Lista de modelos vacía al llamar a as24ci_get_models — o bien no se han importado modelos para la marca proporcionada, o el parámetro de marca está vacío / no es un término de taxonomía conocido.
  • No seller IDs configured. desde el asistente por lotes — abra la pestaña de la API y añada al menos un Seller ID antes de volver a ejecutar.
  • Lista de modelos desactualizada después de una importación — llame a Ajax::clear_models_cache() (el importador ya hace esto en cada ejecución exitosa); compruebe el almacenamiento de transients si su plugin de caché de objetos anula los transients.

Documentos relacionados