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 intervalo | Duración | Registrado en | Utilizado por |
|---|---|---|---|
as24ci_every_5_minutes | 300 s (5 min) | Archivo principal del plugin adp-car-market-hub.php. Siempre registrado. | Cola de generación de IA. |
as24ci_every_6_hours | 6 h | AS24CI\Scheduler::add_cron_intervals(). | Importador cuando se selecciona "Cada 6 horas". |
as24ci_custom | N minutos | AS24CI\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,dailyoas24ci_custom). Paradaily/twicedaily, la hora de inicio proviene deas24ci_cron_start_time(HH:MM, zona horaria del sitio WordPress). - Activo cuando:
as24ci_auto_import_enabledes'1'. Se actualiza medianteScheduler::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 enas24ci_image_queue_last_runpara 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 porAS24CI\Schedulerincluso 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 porAi_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 porAS24CI\Pluginen 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_daysde 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 dePricing_Engine::schedule(); eliminado a través dePricing_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:
dailyotwicedaily, controlado poras24ci_dq_scan_frequency. La hora de la primera ejecución se deriva deas24ci_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_enabledes'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) porLicense_Manager::ensure_cron_scheduled()enadmin_inity en la activación del plugin; se elimina a través deLicense_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 cron —
GET /wp-json/as24ci/v1/cron-importcon 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_importestá en la lista de cron pero nunca se ejecuta. WP-Cron se basa en solicitudes. Visite el sitio, ejecutewp cron event run --due-nowa 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_runningestá 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.