TSO Image Master

Descripción

TSO Image Master es un plugin completo de gestión de medios y optimización de imágenes para WordPress. Ofrece las siguientes funciones desde una única pantalla de administración:

Image Optimizer — Convierte imágenes a WebP o JPG, define la calidad y las dimensiones, reemplaza las originales y actualiza automáticamente todos los enlaces de contenido. Admite operaciones por lotes. Requiere la biblioteca PHP GD con soporte para WebP.

Orphaned Image Finder — Detecta imágenes de la Biblioteca de medios que no están referenciadas en ninguna entrada, página, widget, campo meta o ajuste del personalizador del tema. Admite el escaneo por lotes paginados para evitar tiempos de espera agotados en sitios grandes.

Rogue File Scanner — Escanea el directorio de subidas en busca de archivos físicos que WordPress no reconoce: archivos con doble extensión (p. ej. imagen.jpg.webp), archivos de copia de seguridad de plugins, archivos temporales y otras imágenes no registradas que desperdician espacio en el disco.

SEO y nombres de archivo — Edita el título, el texto alternativo, la leyenda y la descripción de cualquier imagen. Cambia el nombre de los archivos utilizando slugs optimizados para SEO (en minúsculas, sin acentos y con guiones en lugar de espacios). Todos los enlaces internos se actualizan automáticamente.

Compresor de PDF — Reduce el tamaño de los archivos PDF de la biblioteca de medios utilizando GhostScript (recomendado) o la extensión de PHP Imagick como alternativa. La URL original nunca cambia.

Auto-Optimizer — Optimiza automáticamente cada imagen nueva al subirla utilizando el formato y la calidad configurados. Utiliza un mecanismo basado en «transients» para garantizar que cada imagen se procese solo una vez y que las regeneraciones no activen la re-optimización.

Historial — Registro de auditoría completo de todas las operaciones realizadas por el plugin: optimizaciones, cambios de nombre, actualizaciones de SEO, compresiones de PDF y reversiones. Se puede filtrar por tipo de acción, intervalo de fechas y nombre de archivo. Limpieza automática configurable.

URL Fixer — Scans all public content types (posts, pages, and custom post types such as portfolio or slides) for broken image URLs caused by format conversions (e.g. references to .jpg files that have been converted to .webp). Renders blocks and shortcodes when needed so embedded images are detected. Automatically finds the correct replacement and updates the database in one click.

Compatibilidad con caché — Después de cualquier operación que modifique las URL de los archivos o el contenido, el plugin purga automáticamente LiteSpeed Cache, WP Rocket, W3 Total Cache y WP Fastest Cache cuando están activos.

Requisitos

  • PHP 7.4 o superior (probado hasta 8.3)
  • WordPress 5.9 o superior (probado hasta 7.0)
  • Librería PHP GD con soporte para JPEG, PNG, GIF y WebP
  • GhostScript (opcional, necesario para la compresión de PDF)
  • Extensión PHP Imagick (opcional, alternativa para la compresión de PDF)

Código fuente

El código fuente de este plugin es totalmente legible por humanos. El archivo admin/js/admin.js es código fuente sin minificar ni ofuscar. No se requieren herramientas de construcción. Todas las cadenas de traducción se pasan desde PHP a través de wp_localize_script().

Traducciones

La interfaz del plugin ya está traducida a los siguientes idiomas (incluidos en el plugin):

  • English — default
  • Català (Catalan)ca
  • Español (Spanish)es_ES

Bundled .mo files also translate the plugin name and description on the WordPress Plugins screen when your site language is Catalan or Spanish.

Si deseas contribuir con una traducción a otro idioma, puedes hacerlo en translate.wordpress.org.

Capturas

Instalación

  1. Sube la carpeta tso-image-master al directorio /wp-content/plugins/ o instálalo directamente desde el escritorio de plugins de WordPress.
  2. Activa el plugin a través de la pantalla de Plugins en WordPress.
  3. Ve a Image Master en la barra lateral de administración para comenzar a usar el plugin.
  4. Opcional: para activar la compresión de PDF, instala GhostScript en tu servidor. Si lo necesitas, pide ayuda a tu proveedor de hosting.

FAQ

¿El plugin modifica los archivos de imagen originales?

Solo si marcas «Reemplazar original». Al reemplazar, el plugin guarda una copia de seguridad en wp-content/uploads/tso-image-master/ con el nombre originalname_tso_im_backup.ext. Puedes restaurarla desde el editor o eliminarla para liberar espacio. Estas copias nunca se guardan dentro de la carpeta del plugin.

¿Qué les pasa a mis imágenes si desinstalo el plugin?

Al desinstalar el plugin se eliminan los siguientes datos:

  • Base de datos: opciones del plugin, la tabla de historial personalizada (wp_tso_im_history), todas las claves postmeta del plugin y los eventos cron programados.
  • Carpeta de seguridad: la carpeta wp-content/uploads/tso-image-master/ y todas las copias de seguridad que contiene se eliminan.
  • Imágenes originales: tus archivos de imagen reales en la carpeta de subidas nunca se eliminan. Solo se eliminan las copias de seguridad creadas por el plugin.

¿Funciona el plugin con plugins de caché?

Sí. Después de cualquier operación que modifique el contenido o las URL de los archivos, el plugin llama automáticamente a las funciones de purga de LiteSpeed Cache, WP Rocket, W3 Total Cache y WP Fastest Cache cuando están instalados y activos.

¿Puedo usar el plugin en una instalación multisitio?

El plugin no ha sido probado explícitamente en multisitio. Está diseñado para instalaciones estándar de WordPress de un solo sitio.

El compresor de PDF no funciona. ¿Qué debo hacer?

La compresión de PDF requiere que GhostScript o la extensión de PHP Imagick estén disponibles en tu servidor. El plugin indica qué motores están disponibles en la parte superior de la pestaña PDF. Contacta con tu proveedor de alojamiento para instalar GhostScript y obtener los mejores resultados.

He optimizado una imagen y el nuevo formato pesa más que el original. ¿Qué ha pasado?

Esto puede suceder con imágenes que ya están bien optimizadas, imágenes muy pequeñas o imágenes con mucha transparencia o detalle. El plugin mostrará una advertencia en este caso. Puedes revertir a la original usando la copia de seguridad.

Reseñas

No hay valoraciones para este plugin.

Colaboradores y desarrolladores

«TSO Image Master» es un software de código abierto. Las siguientes personas han colaborado con este plugin.

Colaboradores

Traduce «TSO Image Master» a tu idioma.

¿Interesado en el desarrollo?

Revisa el código , echa un vistazo al repositorio SVN o suscríbete al registro de desarrollo por RSS.

Registro de cambios

1.9.0

  • Added: URL Fixer — manually remove broken image references from content when no automatic fix is available (img tags, Gutenberg blocks, widgets).
  • Improved: history auto-cleanup — separate retention days and check frequency (daily/weekly/monthly); save feedback fixed.
  • Improved: clearer revert error when backup no longer matches after a file rename.
  • Fixed: image/PDF search matches filename prefix only (e.g. «ar» finds «arbre», not «mar»).
  • Added: PDF preview modal in the PDFs tab (iframe + open in new tab fallback).
  • Improved: Rogue Scanner UI renamed to “extra upload files”; TSO backups shown as informational (not “problematic”).
  • Fixed: image rename failed with fatal error (private URL replace method now callable from Image Manager).
  • Fixed: backup files stored per upload subfolder; optimize modal shows backup only when the physical file exists (stale DB meta cleared automatically).
  • Fixed: optimize rolls back filesystem changes when WordPress metadata update (FASE 2) fails.
  • Fixed: URL repair after conversion/rename covers legacy sizes, -scaled, postmeta, widgets, and serialized data (ACF).
  • Fixed: MIME and orphan-meta repair tools no longer regenerate WebP thumbnails when only MIME/path metadata was wrong.
  • Fixed: file rename copies all variants before deleting originals; revert and delete-backup validate paths and file size.
  • Fixed: readable AJAX error messages; 7-column image grid (35 per page); admin dropdowns on Windows/dark admin.
  • Fixed: Plugin Check compliance — postmeta updates use update_metadata() instead of direct meta_value writes.
  • Improved: WordPress 7.0 compatibility (readme).
  • Fixed: history filename search uses prefix match (consistent with image/PDF search).
  • Fixed: history retention accepts 1–3650 days (0 = disabled).
  • Added: index.php in plugin subdirectories; upgrade hook reschedules history cron on version bump.

1.7.0

  • Fixed: static GIF and PNG conversion to WebP (palette images converted to truecolor before save).
  • Fixed: failed conversions no longer leave empty _tso_im_opt.* temp files or zero-byte backups on disk.
  • Fixed: backup paths include upload subfolder to avoid collisions between same-named files.
  • Fixed: optimize rolls back filesystem changes when metadata update (FASE 2) fails.
  • Fixed: MIME repair no longer regenerates thumbnails when only the MIME type was wrong.
  • Fixed: orphan-meta repair regenerates attachment metadata and guid after WebP path fix.
  • Fixed: serialized postmeta/options are updated safely during URL replacement (ACF/widgets).
  • Fixed: rename copies all files before deleting originals; revert validates backup copy.
  • Fixed: backup badge in optimize modal only appears when the backup file exists on disk (stale meta is cleared).
  • Fixed: optimize errors now show readable messages instead of [object Object].
  • Fixed: image grid uses 7 columns with 35 images per page (5 full rows); main nav tabs span the full width.
  • Fixed: file rename updates URLs from real filenames, renames -scaled files, and syncs posts, postmeta, excerpts, and options.
  • Fixed: URL Fixer shows the correct destination filename; admin dropdowns readable on Windows and dark admin.
  • Fixed: Plugin Check compliance — postmeta updates use update_metadata() instead of direct meta_value writes.
  • Improved: WordPress 7.0 compatibility (readme).

1.6.0

  • Fixed: manual WebP/JPG conversion repairs broken image URLs after thumbnail regeneration — all legacy sizes (-150x150, -300x200, -1024x768, -scaled, etc.), cross-extension links (.jpg in content / .webp on disk), relative /wp-content/uploads/ paths, postmeta and widget options.
  • Fixed: bulk optimize runs the same URL repair pass when the output format does not change.
  • Fixed: auto-optimizer on upload passes pre-regeneration metadata to URL repair (same pipeline as manual optimize).
  • Fixed: file rename updates thumbnail URLs from real filenames (not reconstructed dimensions), renames -scaled variants, and updates postmeta/excerpts/widgets — not only post content.
  • Fixed: thumbnail conversion quality during metadata update; dimension-variant regex updates postmeta and excerpts, not only post content.
  • Fixed: URL Fixer shows the correct destination filename when the suggested replacement uses a different size or base name.
  • Fixed: admin UI — custom dropdown lists readable on Windows and dark admin; restored settings toolbar layout and search field styling; clearer auto-convert format options.
  • Improved: WordPress 7.0 compatibility (readme).

1.5.9

  • Security: URL Fixer only applies database replacements when both URLs point to the site uploads directory; destination files are resolved with realpath() so paths cannot escape uploads.
  • Security: Rogue file deletion resolves each path with realpath() and requires the file to stay inside wp-content/uploads.
  • Mejorado: las traducciones se cargan mediante load_textdomain() con archivos .mo incluidos o paquetes de idioma (compatibilidad con Plugin Check; evita el uso desaconsejado de load_plugin_textdomain()).
  • Fixed: use wp_parse_url() instead of parse_url() for error messages (coding standards).

1.5.8

  • Fixed: plugin name and description on the WordPress Plugins screen now appear in Catalan and Spanish when the site language is set accordingly.
  • Añadido: archivos languages/*.mo incluidos y carga anticipada del dominio de texto para las traducciones según la configuración regional del sitio.
  • Fixed: URL Fixer now scans all public custom post types (e.g. portfolio, portfolio-item, diapositivas), not only posts and pages.
  • Improved: URL Fixer also inspects rendered block/shortcode output and post excerpts so broken image URLs inside CPT content are detected.
  • Improved: URL Fixer summary label now refers to scanned content items instead of posts only.

1.5.7

  • Actualizado: descripciones de capturas en el readme para ajustarlas a la interfaz actual del plugin.

1.5.6

  • Actualizado: incremento de versión a 1.5.6.

1.5.5

  • Corregido: saneado de la entrada de renombrado manual en el manejador AJAX para cumplir PHPCS conservando caracteres UTF-8 (p. ej., ç, ñ).

1.5.4

  • Corregido: búsqueda UTF-8 estricta en buscadores de imágenes y PDF (sin falsos positivos con caracteres como ñ).
  • Corregido: actualización de URL en transformaciones manuales de imagen para nombres de archivo codificados/no codificados con acentos y caracteres especiales.
  • Corregido: gestión del escaneo/corrección de Inconsistencias de URL para rutas UTF-8 y URL codificadas.
  • Corregido: actualización dinámica del idioma de la interfaz en Historial y Rogue tras cambiar el idioma del plugin.
  • Improved: mobile readability in Rogue and History sections (better card/table layout on small screens).

1.5.3

  • Corregido: el flujo de compresión PDF evita esperas largas indefinidas con un tiempo límite estricto y sondeos más rápidos.
  • Añadido: alternativa automática de GhostScript a Imagick en compresión PDF en segundo plano cuando no se genera salida a tiempo.
  • Añadido: comprobaciones previas para PDF cifrados/protegidos y PDF ya comprimidos, con fallo rápido y mensajes claros.
  • Añadido: estado persistente de PDF «no comprimible» con motivo y marca temporal, incluyendo distintivo en la interfaz y botón de reintento desactivado.
  • Mejorado: la gestión de tiempos de espera y errores ahora refresca la lista de PDF al instante para reflejar cambios de estado.

1.5.2

  • Añadido: selector de formato de origen para la auto-conversión en los ajustes del Auto-Optimizer (JPG/JPEG, PNG, WEBP, solo GIF estáticos, BMP, TIFF).
  • Añadido: soporte para la auto-optimización de subidas de archivos estáticos GIF, BMP y TIFF cuando se seleccionan.
  • Mejorado: gestión robusta de GIF; los GIF animados nunca se convierten automáticamente, con comportamiento de seguridad si no se pueden verificar los fotogramas.
  • Mejorado: soporte de tipos MIME más amplio para la detección de TIFF/TIF en el auto-optimizador.
  • Corregido: coherencia del comportamiento de «formato original» para BMP/TIFF en modo automático (ahora se omiten de forma segura en lugar de aplicar una alternativa inesperada).

1.5.1

  • Corregido: cambio de idioma completo dentro del plugin (CA/ES/EN) para mensajes dinámicos AJAX y resúmenes/listas de URL Fixer.
  • Corregido: cadenas residuales en idiomas mezclados tras cambiar de catalán a español/inglés.
  • Corregido: solapamiento/recorte de la cabecera en móviles en la barra superior de administración de WordPress.
  • Mejorado: diseño responsive en pestañas móviles, cabecera y renderizado de tablas de historial/auto-historial.

1.5.0

  • Añadido: pestaña URL Fixer, que escanea y corrige URL de imágenes rotas en entradas y páginas.
  • Añadido: Rogue File Scanner, detecta archivos no registrados y copias de seguridad con doble extensión.
  • Añadido: Manejo de rutas codificadas en base64 en la eliminación de archivos rogue para una codificación correcta del sistema de archivos UTF-8/latin1.
  • Añadido: Corrección de URL TIPO B2 — detecta miniaturas faltantes debido al cambio de nombre del sufijo de dimensión.
  • Corregido: El auto-optimizador ahora utiliza un mecanismo basado en transients para evitar la re-optimización en regeneraciones internas.
  • Corregido: La compresión de PDF ahora actualiza _wp_attachment_metadata[filesize] para una visualización correcta en WP 6.0+.
  • Corregido: normalización de rutas del escáner Rogue para compatibilidad multiplataforma.
  • Mejorado: Todas las cadenas i18n se han movido de JS JSON.parse a PHP wp_localize_script().
  • Mejorado: El CSS en línea ahora usa wp_add_inline_style() en lugar de echo '<style>'.
  • Cambiado: El prefijo de la clase se ha actualizado a TSOIMMA_ para cumplir con las directrices de plugins de WordPress.

1.0.0

  • Versión inicial.