Documentación · Resolución de problemas
Errores de importación de imágenes
Este documento cubre los fallos que pueden ocurrir cuando el plugin descarga y adjunta imágenes de vehículos desde la API de AutoScout24. Describe las causas probables y los pasos para diagnosticar y resolver los problemas de importación de archivos multimedia.
Cuándo utilizar este documento
Lea este documento cuando:
- Los posts de vehículos se importan pero no tienen imágenes o solo tienen un conjunto parcial de ellas.
- El log del plugin contiene líneas que mencionan
Image download failedomedia_handle_sideload failed. - Falta la imagen destacada en los posts de vehículos importados.
- La conversión a WebP está habilitada pero las imágenes se guardan en su formato original.
- El worker de la cola de imágenes ha estado ejecutándose pero aún faltan imágenes.
Descripción general
Cuando el plugin importa un vehículo, descarga las imágenes desde las URL proporcionadas por la API de AutoScout24 y las adjunta al post de WordPress. El proceso utiliza las funciones integradas download_url() y media_handle_sideload() de WordPress, que colocan las imágenes en el directorio de subidas estándar de WordPress, generan miniaturas y registran el archivo adjunto en la biblioteca de medios.
Desduplicación
Antes de descargar una imagen, el plugin comprueba si ya ha sido importada buscando un archivo adjunto con un valor de meta de post _as24ci_source_url coincidente. Si se encuentra una coincidencia, se reutiliza el ID del archivo adjunto existente y no se realiza ninguna descarga. Esto evita que la misma imagen se almacene varias veces.
Imagen destacada
La primera imagen del conjunto se establece automáticamente como la imagen destacada (miniatura del post) si no hay ninguna imagen destacada asignada previamente al post. Las imágenes posteriores se registran en el array de meta de post _as24ci_image_ids.
Modo de cola de imágenes
Cuando el modo de cola de imágenes está habilitado (el valor predeterminado para las ejecuciones de importación por cron y REST), solo la primera imagen de cada vehículo se descarga inmediatamente durante la ejecución de la importación. Las URL de las imágenes restantes se colocan en una cola persistente. Un worker de WP-Cron independiente (as24ci_image_queue_process) procesa esta cola de forma asíncrona en lotes de 30 imágenes por ejecución. Esto reduce el tiempo y la memoria requeridos por cada ejecución de importación.
Consulte Errores de Cron para obtener orientación sobre cómo diagnosticar fallos en el worker de la cola de imágenes.
Conversión a WebP
Si la conversión a WebP está habilitada, cada imagen descargada se convierte al formato .webp antes de pasarse a la biblioteca de medios de WordPress. El plugin intenta la conversión utilizando primero PHP GD (imagewebp) y luego recurre a Imagick como alternativa. Si ninguna de las extensiones está disponible, o si la conversión falla, se utiliza el formato de imagen original y se escribe una advertencia en el log.
Requisitos previos
- La conexión de la API funciona y las imágenes están presentes en el listado de AutoScout24. Verifique esto en la página de Estado del sistema.
- El proceso del servidor web tiene permisos de escritura en el directorio de subidas de WordPress.
- La opción Importar imágenes está habilitada en los ajustes del plugin.
- El límite de memoria de PHP y el tiempo de ejecución son suficientes para descargar y procesar imágenes.
Pasos de diagnóstico
Paso 1: Confirmar que la importación de imágenes está habilitada
- Vaya a la pestaña de Ajustes del plugin (o Importación y límites según el diseño).
- Confirme que Importar imágenes está habilitado.
- Observe el valor de Máx. de imágenes por vehículo. Si está configurado en un número bajo (por ejemplo,
1), solo se descargará esa cantidad de imágenes por vehículo. Establézcalo en0para que sea ilimitado.
Paso 2: Leer el archivo de log
Abra el archivo de log del plugin en:
wp-content/uploads/as24ci-logs/adp-car-market-hub.log
Busque los siguientes patrones:
| Patrón de log | Significado |
|---|---|
Image download failed for listing_id=… url=… error=… | download_url() devolvió un error. El mensaje de error incluye la causa (por ejemplo, tiempo de espera de HTTP agotado, conexión rechazada, 404). |
media_handle_sideload failed for listing_id=… url=… error=… | WordPress no pudo registrar el archivo descargado como un archivo adjunto de medios. A menudo se trata de un problema de permisos del sistema de archivos o de espacio en disco. |
WebP conversion skipped: neither GD imagewebp nor Imagick available. | La conversión a WebP está habilitada pero la extensión de PHP requerida no está presente. |
WebP GD conversion failed for …, trying Imagick. | GD falló; se intentará utilizar Imagick como alternativa. |
WebP Imagick conversion failed: … | Ambos métodos de conversión fallaron. Se guardó el formato de imagen original. |
WebP conversion failed for …, using original. | Alternativa final: se guardó la imagen original. |
Image queue worker: processed=… errors=… remaining=… | Resumen de la última ejecución del worker de la cola de imágenes. |
Image queue worker error post_id=… url=… error=… | Una imagen individual falló dentro del worker de la cola. |
Paso 3: Verificar el directorio de subidas
El proceso del servidor web debe tener permisos de escritura en el directorio de subidas de WordPress. Ubicación típica:
wp-content/uploads/
Compruebe a través de FTP, SFTP o el administrador de archivos del hosting que:
- El directorio existe.
- El proceso del servidor web tiene permisos de escritura (normalmente
755para directorios, con el usuario del servidor web como propietario). - Hay suficiente espacio en disco disponible.
Si el directorio de subidas no tiene permisos de escritura, media_handle_sideload fallará con un error del sistema de archivos.
Paso 4: Comprobar los límites de memoria y ejecución de PHP
Descargar y procesar múltiples imágenes en una sola solicitud requiere una memoria PHP adecuada. Si el límite de memoria de PHP es demasiado bajo, el procesamiento de imágenes puede fallar silenciosamente o generar un error fatal.
- Compruebe en Herramientas → Salud del sitio → Información → Servidor el límite de memoria de PHP actual y el tiempo máximo de ejecución.
- Si el límite de memoria está por debajo de 256 MB para sitios con archivos de imagen grandes, considere aumentarlo a través de
wp-config.php(define('WP_MEMORY_LIMIT', '256M')) o el panel de control del hosting. - Para las ejecuciones por cron, el plugin intenta establecer un límite de tiempo de ejecución de 300 segundos. Si el entorno de hosting restringe
set_time_limit, es posible que esto no surta efecto. Utilice el modo de cola de imágenes (habilitado por defecto) para distribuir las descargas de imágenes en varias ejecuciones más cortas.
Paso 5: Probar la accesibilidad de las URL de las imágenes
Si el log muestra Image download failed con un error de red o HTTP, verifique que las URL de las imágenes devueltas por la API sean accesibles públicamente desde su servidor:
- Copie una URL de imagen de la entrada del log.
- Intente acceder a ella en un navegador. Si devuelve un error 404 o de autenticación, es posible que la imagen se haya eliminado de la API o que requiera una autenticación que el plugin no proporciona.
- Si la URL es accesible en un navegador pero no desde el servidor, puede haber una lista de permitidos de IP, un cortafuegos o una restricción de proxy en las solicitudes HTTP salientes de su servidor.
Paso 6: Verificar el estado de la cola de imágenes
- Vaya a la pestaña Sistema y ayuda del plugin.
- Busque la sección de la cola de imágenes que muestra: elementos restantes, hora de la última ejecución, recuentos de procesados y fallidos.
- Si quedan elementos y el worker de la cola no se ha ejecutado recientemente, verifique que WP-Cron esté activo y que el gancho
as24ci_image_queue_processesté programado. Consulte Errores de Cron para obtener más detalles. - Si el bloqueo de la cola de imágenes (
as24ci_image_queue_running) está obsoleto, elimínelo a través de WP-CLI o un plugin de gestión de transients: ``wp transient delete as24ci_image_queue_running``
Paso 7: Comprobar los requisitos previos para la conversión a WebP
Si la conversión a WebP está habilitada pero las imágenes se guardan como JPEG o PNG:
- Vaya a Herramientas → Salud del sitio → Información → Servidor y busque la biblioteca GD e Imagick.
- GD requiere la función
imagewebp, que está disponible en GD compilado con soporte para WebP (PHP 5.5+). Confírmelo con su proveedor de hosting. - Imagick requiere la extensión de PHP
imagickcompilada con soporte para WebP. Confírmelo con su proveedor de hosting. - Si ninguna de las dos opciones está disponible, deshabilite la conversión a WebP en los ajustes del plugin o póngase en contacto con su proveedor de hosting para habilitar la extensión requerida.
Referencia de configuración
| Ajuste | Efecto |
|---|---|
| Importar imágenes | Interruptor principal. Cuando está deshabilitado, no se descargan imágenes durante la importación. Por defecto: habilitado. |
| Máx. de imágenes por vehículo | Número máximo de imágenes descargadas por vehículo. 0 = ilimitado. |
| Modo de cola de imágenes | Cuando está habilitado, solo la primera imagen se descarga inmediatamente; las imágenes restantes se ponen en cola. Por defecto: habilitado para ejecuciones por cron/REST. |
| Convertir a WebP | Cuando está habilitado, las imágenes descargadas se convierten al formato .webp. Requiere GD con soporte para WebP o Imagick. Por defecto: deshabilitado. |
| Calidad WebP | Calidad de compresión para la conversión a WebP (1–100). Por defecto: 80. |
Notas de funcionamiento
- Las imágenes se descargan con un tiempo de espera de 30 segundos por URL. Los servidores de imágenes externos lentos o poco fiables pueden hacer que fallen imágenes individuales sin afectar al resto de la importación.
- Cada imagen descargada se registra en la biblioteca de medios de WordPress como un archivo adjunto con
post_parentestablecido en el ID del post del vehículo. - El valor de meta de archivo adjunto
_as24ci_source_urlse utiliza para la desduplicación. Si este meta se elimina o se corrompe, el plugin puede descargar la misma imagen de nuevo en la siguiente importación. - La cola de imágenes puede contener hasta 20.000 elementos. Si se supera este límite, se registra una advertencia y se ejecuta una pasada de desduplicación. Consulte Errores de Cron.
- Cuando se han procesado todos los elementos de la cola para un vehículo, el meta
_as24ci_image_idsse reconstruye a partir de los archivos adjuntos secundarios reales y se finaliza el hash de las imágenes. Hasta entonces, el valor del hash se establece enpending_queuepara indicar que el conjunto de imágenes aún no está completo. - Eliminar un post de vehículo de forma permanente (a través de la función de eliminación del plugin o desde la lista de CMH Cars de WordPress) también elimina de forma permanente todas las imágenes adjuntas importadas por el plugin.
Resolución de problemas
| Síntoma | Causa probable | Comprobación |
|---|---|---|
| No hay imágenes en ningún vehículo | La importación de imágenes está deshabilitada | Habilítela en los ajustes del plugin |
| Solo una imagen por vehículo | El máximo de imágenes está configurado en 1, o la cola de imágenes no se ha ejecutado | Compruebe el ajuste de máximo de imágenes; verifique que el worker de la cola se esté ejecutando |
Image download failed … HTTP 404 | La URL de la imagen ya no es válida | Verifique que el listado aún tenga imágenes en AutoScout24; vuelva a importar |
Image download failed … connect timed out | El servidor no puede conectarse con el host de imágenes externo | Compruebe el acceso a la red saliente; pruébelo desde el servidor con curl |
media_handle_sideload failed … Could not write file | El directorio de subidas no tiene permisos de escritura o el disco está lleno | Compruebe los permisos del directorio y el espacio disponible en disco |
| La conversión a WebP se omite silenciosamente | GD/Imagick no están disponibles o no están compilados con soporte para WebP | Compruebe Salud del sitio → Servidor; deshabilite la conversión a WebP si no es compatible |
| Imágenes presentes en la biblioteca de medios pero no en la página del vehículo | Es posible que falte el meta _as24ci_image_ids o que sea incorrecto | Vuelva a importar el vehículo; compruebe el meta del post en la base de datos |
| Falta la imagen destacada | Es posible que la primera imagen de la cola aún no se haya procesado | Compruebe el estado de la cola de imágenes; verifique que el worker de la cola se ejecute |
| Imágenes duplicadas en la biblioteca de medios | Falta el meta _as24ci_source_url en los archivos adjuntos | No elimine este meta; póngase en contacto con el soporte técnico si se ve afectado |