OptiImg Pro
Plugin de WordPress para optimización automática de imágenes: compresión y conversión a WebP. Procesa nuevas subidas y permite optimizar en lote toda la biblioteca de medios con una interfaz moderna y segura.
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/webcoredev/compresor-imagen/archive/refs/heads/main.zipPlugin de WordPress para optimización automática de imágenes: compresión y conversión a WebP. Procesa nuevas subidas y permite optimizar en lote toda la biblioteca de medios con una interfaz moderna y segura.
Autor: Loreana Mavares
Versión: 3.4
Requisitos: WordPress 5.6+, PHP 7.4+, extensión GD (con soporte WebP) o Imagick
Características principales
- Optimización en la subida: al subir imágenes JPG, JPEG o PNG se comprimen (nivel de calidad configurable, por defecto 6 ≈ 60%) y se genera automáticamente una versión en formato WebP.
- Optimización en lote: interfaz en el panel de administración para procesar todas las imágenes compatibles de la biblioteca de medios (conversión a WebP y compresión), con barra de progreso en tiempo real.
- Sin dependencias externas pesadas: todo el procesamiento se realiza con PHP nativo usando GD o Imagick, ya presentes en la mayoría de servidores.
- Seguridad: uso de nonces, comprobación de capacidades (
manage_options) y sanitización de opciones y datos entrantes. - Interfaz premium: página de ajustes en modo oscuro (gris carbón y acentos neón), con componentes nativos de WordPress estilizados para una experiencia moderna.
Instalación
- Descarga o clona el repositorio en la carpeta de plugins de WordPress:
cd wp-content/plugins git clone <url-del-repositorio> compresor-imagen - En el escritorio de WordPress, ve a Plugins y activa OptiImg Pro.
- Ve a Ajustes → OptiImg Pro para configurar el nivel de calidad (1–10), activar/desactivar la optimización automática en subida e iniciar la optimización en lote si lo deseas.
Requisitos del servidor: debe estar disponible la extensión GD (con soporte WebP) o Imagick. El plugin comprueba automáticamente cuál usar y lo indica en la página de ajustes.
Guía técnica: arquitectura modular
El plugin está pensado para ser mantenible, testeable y escalable, con separación clara de responsabilidades.
Estructura de carpetas
compresor-imagen/
├── optiimg-pro.php # Punto de entrada, constantes y activación
├── includes/ # Lógica de negocio (core)
│ ├── class-plugin.php # Orquestador principal
│ ├── class-image-processor.php # Compresión y conversión WebP (GD/Imagick)
│ └── class-upload-handler.php # Hook en subida de medios
├── admin/ # Lógica de administración e interfaz
│ ├── class-admin.php # Menú, página de ajustes y recursos
│ ├── class-settings.php # Registro y sanitización de opciones
│ └── class-bulk-processor.php # AJAX: listado de IDs y procesamiento por lotes
├── assets/
│ ├── css/admin.css # Estilos dark mode (carbón + neón)
│ └── js/bulk-optimizer.js # Barra de progreso y llamadas AJAX
└── README.md
Por qué es modular
-
Separación de responsabilidades:
- includes: no conoce el admin ni la base de datos de WordPress más allá de lo necesario (opciones, adjuntos). Aquí vive la lógica de “cómo comprimir y convertir a WebP”.
- admin: solo se carga en el panel de administración (
is_admin()); se encarga de menús, opciones, AJAX y de exponer la interfaz. - assets: presentación (CSS/JS) separada del PHP, lo que facilita cambios de diseño y mantenimiento.
-
Hooks utilizados:
- Subida: se usa el filtro
wp_generate_attachment_metadatapara, una vez generados los metadatos del adjunto, procesar el archivo subido y generar el WebP sin alterar el flujo estándar de medios. - La optimización en lote se hace por AJAX (acciones
optiimg_pro_get_attachment_idsyoptiimg_pro_process_batch) para no bloquear la interfaz y permitir una barra de progreso real.
- Subida: se usa el filtro
-
Seguridad:
- Verificación de capacidades en cada acción AJAX y en la visualización de la página de ajustes.
- Uso de nonces en las peticiones AJAX.
- Sanitización de opciones (
sanitize_quality,sanitize_auto_upload) y de IDs en el bulk (absint, listas controladas).
-
Compatibilidad:
- Antes de procesar, se comprueba si GD o Imagick están disponibles (y en el caso de GD, soporte WebP). Si no hay ninguno, el plugin no procesa y lo indica en la interfaz.
Esta estructura permite añadir en el futuro otros formatos, otros hooks o una API REST sin tocar la lógica de compresión, y facilita revisar el código en portafolio o por otros desarrolladores.
Licencia
GPL v2 o posterior.