WP Manifestindependent plugin directory
manifest / performance / compresor-imagen

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.

by Loreana Mavares · github.com/webcoredev/compresor-imagen

0stars
0forks

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.zip

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.

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

  1. Descarga o clona el repositorio en la carpeta de plugins de WordPress:
    cd wp-content/plugins
    git clone <url-del-repositorio> compresor-imagen
  2. En el escritorio de WordPress, ve a Plugins y activa OptiImg Pro.
  3. 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_metadata para, 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_ids y optiimg_pro_process_batch) para no bloquear la interfaz y permitir una barra de progreso real.
  • 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.