Documentación · Apéndices

Referencia de hooks de Cron

Este apéndice enumera cada hook de WP-Cron e intervalo personalizado registrado por el plugin ADP Car Market Hub.

Cuándo utilizar este documento

Utilice esta referencia al diagnosticar tareas programadas perdidas, al realizar la integración con los comandos de cron de WP-CLI o al planificar un cron del sistema externo. Para obtener la explicación narrativa completa, consulte Eventos de Cron y programador y Hooks de Cron para desarrolladores.

Descripción general

El plugin utiliza WP-Cron para todo su trabajo periódico en segundo plano. WP-Cron se basa en solicitudes: los eventos se activan en la siguiente carga de página en o después de su hora programada. En un sitio con poco tráfico, programe un cron del lado del servidor para llamar a wp-cron.php o al endpoint REST cron-import del plugin.

Intervalos personalizados

Clave de intervaloDuraciónRegistrado enUtilizado por
as24ci_every_5_minutes300 s (5 min)Archivo principal del plugin adp-car-market-hub.php. Siempre registrado.Cola de generación de IA.
as24ci_every_6_hours6 hAS24CI\Scheduler::add_cron_intervals().Importador cuando se selecciona "Cada 6 horas".
as24ci_customN minutosAS24CI\Scheduler::add_cron_intervals(). N es as24ci_cron_custom_minutes, limitado a un mínimo de 15 minutos.Importador cuando se selecciona "Personalizado".

Los intervalos estándar de WordPress (hourly, twicedaily, daily) también son aceptados por la programación de importación.

Hooks de cron recurrentes

as24ci_scheduled_import

  • Propietario: AS24CI\Scheduler (Scheduler::CRON_HOOK).
  • Programación: Controlado por as24ci_cron_schedule (hourly, as24ci_every_6_hours, twicedaily, daily o as24ci_custom). Para daily/twicedaily, la hora de inicio proviene de as24ci_cron_start_time (HH:MM, zona horaria del sitio WordPress).
  • Activo cuando: as24ci_auto_import_enabled es '1'. Se actualiza mediante Scheduler::reschedule() cada vez que se guardan los ajustes de automatización.
  • Callback: Scheduler::run_scheduled_import()Scheduler::run_import('wp-cron').
  • Bloqueo: Transitorio as24ci_cron_import_running (~40 minutos de TTL). Los bloqueos obsoletos que superen el TTL se eliminan automáticamente.
  • Notas: Compartido con el botón de administración manual "Ejecutar ahora" y el endpoint REST de cron. Las tres rutas utilizan el mismo ejecutor Scheduler::run_import() y respetan el mismo bloqueo.

as24ci_image_queue_process

  • Propietario: AS24CI\Scheduler (Scheduler::IMAGE_QUEUE_HOOK).
  • Programación: Eventos únicos. El importador programa el worker cuando pone en cola las imágenes en lugar de descargarlas en línea; el worker se vuelve a programar a sí mismo con wp_schedule_single_event() mientras queden elementos en la cola.
  • Callback: Scheduler::run_image_queue().
  • Bloqueo: Transitorio as24ci_image_queue_running (~10 minutos de TTL).
  • Tamaño del lote: Scheduler::IMAGE_QUEUE_BATCH_SIZE (30 imágenes por lote en el código fuente actual; verifíquelo antes de publicar si necesita un valor exacto).
  • Notas: La propia cola se almacena en la opción as24ci_image_queue. Las estadísticas por lote se escriben en as24ci_image_queue_last_run para el widget del escritorio y la pestaña Sistema y Ayuda.

as24ci_process_ai_queue

  • Propietario: AS24CI\Ai_Assistant (Ai_Assistant::AI_QUEUE_HOOK); el callback de la acción de cron está vinculado por AS24CI\Scheduler incluso cuando la función de IA está desactivada, por lo que WP-Cron siempre tiene un callback para el hook.
  • Programación: Intervalo personalizado as24ci_every_5_minutes (300 segundos). La programación está controlada por Ai_Assistant::maybe_schedule_ai_queue(), que aplica todas las condiciones previas (función de IA activada, Gemini gestionado configurado, automatización activa).
  • Callback: Ai_Assistant::process_ai_queue().
  • Notas: Cuando la automatización de IA está desactivada o sin configurar, el hook se desprograma pero su callback permanece vinculado para que los activadores manuales desde la administración sigan funcionando.

as24ci_daily_cleanup

  • Propietario: AS24CI\Analytics (Analytics::ANALYTICS_CLEANUP_CRON_HOOK).
  • Programación: daily. Programado por AS24CI\Plugin en la activación si no está programado previamente; se elimina al desactivar.
  • Callback: Analytics::cleanup_old_data().
  • Comportamiento: Elimina las filas de análisis anteriores a as24ci_analytics_retention_days de la tabla {$wpdb->prefix}as24ci_analytics.

as24ci_pricing_analysis_cron

  • Propietario: AS24CI\Pricing_Engine (Pricing_Engine::CRON_HOOK).
  • Programación: daily. Programado a través de Pricing_Engine::schedule(); eliminado a través de Pricing_Engine::clear_schedule() al desactivar.
  • Callback: Pricing_Engine::run_daily_analysis().

as24ci_automated_taxonomy_scan

  • Propietario: AS24CI\Data_Quality_Scanner (Data_Quality_Scanner::CRON_HOOK).
  • Programación: daily o twicedaily, controlado por as24ci_dq_scan_frequency. La hora de la primera ejecución se deriva de as24ci_dq_scan_time (HH:MM en la zona horaria del sitio WordPress). La programación se reconstruye cada vez que se guardan las opciones relacionadas.
  • Activo cuando: as24ci_dq_scan_enabled es '1'.
  • Callback: Data_Quality_Scanner::run_scan().

as24ci_license_refresh

  • Propietario: AS24CI\License_Manager (License_Manager::REFRESH_CRON_HOOK).
  • Programación: daily. La primera ejecución se programa una hora después de que se crea el evento. Programado de forma diferida (lazy) por License_Manager::ensure_cron_scheduled() en admin_init y en la activación del plugin; se elimina a través de License_Manager::clear_cron() al desactivar.
  • Callback: License_Manager::scheduled_refresh() — realiza una revalidación en segundo plano de la licencia contra la API Platform.
  • Notas: El callback de cron siempre está vinculado; solo la programación es diferida, por lo que no se ejecuta ningún trabajo de programación en las solicitudes ordinarias del frontend.

as24ci_webhook_retry

  • Propietario: Subsistema de Webhooks.
  • Programación: Eventos únicos. Programado después de un intento de webhook para realizar un reenvío de seguimiento bloqueante y para reintentos de tipo exponencial acotado en fallos transitorios (~60 s, ~2 min, ~4 min, hasta tres intentos en total).
  • Notas: Verifique los intervalos exactos y el recuento de intentos en el código fuente actual antes de publicarlos en la documentación para el cliente.

as24ci_competitor_watcher_cron (solo limpieza heredada)

Este hook pertenecía a una función eliminada de Competitor Watcher y no es una función activa del plugin. El nombre del hook se conserva únicamente para que Competitor_Watcher::clear_schedule() pueda limpiar cualquier evento programado restante de instalaciones anteriores al desactivar el plugin. No hay programación, ni acción AJAX, ni interfaz de usuario de administración para ello. No dependa de este hook desde código externo.

Activación de importaciones fuera de WP-Cron

Existen dos rutas admitidas oficialmente para activar una importación fuera de WP-Cron, ambas delegando en el mismo ejecutor Scheduler::run_import() y respetando el mismo bloqueo:

  • Endpoint REST de cronGET /wp-json/as24ci/v1/cron-import con autenticación por token. Consulte la Referencia de endpoints REST.
  • Activador manual de administración — el botón "Ejecutar ahora" en la pestaña de administración Importación y límites. La acción AJAX subyacente es as24ci_trigger_import_now.

El plugin también registra una marca de tiempo de latido (heartbeat) en as24ci_last_external_cron_run cada vez que se accede a cualquier URL del sitio con el parámetro de consulta ?as24ci_cron=1. Este latido es solo para supervisión; no inicia una importación.

Notas operativas

  • Los eventos de WP-Cron en un sitio con poco tráfico pueden retrasarse o perderse por completo. Para un comportamiento predecible, configure un cron del lado del servidor y desactive WP-Cron en wp-config.php (define( 'DISABLE_WP_CRON', true );).
  • Cuando desactiva un módulo de función en la administración, sus eventos de cron relacionados se desprograman. Se vuelven a programar la próxima vez que se vuelve a activar la función y su register_hooks() se ejecuta durante el inicio del plugin.
  • El worker de la cola de imágenes utiliza eventos únicos en lugar de una programación recurrente. Solo se programa a sí mismo si quedan elementos en la cola.
  • Todos los nombres de hooks y constantes anteriores reflejan el código actual del plugin. Verifique la versión a la que se dirige antes de publicar código de extensión que observe estos hooks.

Resolución de problemas

  • as24ci_scheduled_import está en la lista de cron pero nunca se ejecuta. WP-Cron se basa en solicitudes. Visite el sitio, ejecute wp cron event run --due-now a través de WP-CLI o configure un activador externo.
  • Los informes de ejecución de importación indican "Importación ya en curso". El bloqueo as24ci_cron_import_running está retenido por otro ejecutor. El plugin borra los bloqueos obsoletos automáticamente una vez que superan el TTL; de lo contrario, desactivar y volver a activar el plugin borra el transitorio.
  • La cola de imágenes se detiene. Verifique la opción as24ci_image_queue_last_run (processed, failed, remaining). Si quedan elementos pero no hay ningún evento programado, ejecute "Procesar cola de imágenes ahora" en la administración para volver a preparar el worker.
  • La cola de IA no avanza. Confirme que la función de IA está activada, que la configuración de Gemini gestionado está aprovisionada (Ai_Config::is_configured()) y que la automatización está encendida; de lo contrario, la programación permanece desactivada.
  • El escaneo de calidad de datos se ejecuta a una hora incorrecta. Guarde las opciones relevantes para forzar una reprogramación y confirme la zona horaria del sitio WordPress en Ajustes → General.

Documentos relacionados