Una actualización de «Record of Consent Extension for Complianz» provoca un error crítico en WordPress

Valencia, 11/08/2026, G.B.
Una actualización reciente del plugin Record of Consent Extension for Complianz, el complemento gratuito que añade registro de consentimientos al plugin Complianz, ha dejado inaccesibles varios paneles de administración de WordPress tras instalarse. El fallo se ha detectado en varios sitios, incluidos algunos que gestiono, donde el escritorio de WordPress quedó bloqueado por un error crítico inmediatamente después de la actualización automática del plugin, mientras que la parte pública de las webs siguió funcionando con normalidad.

Cómo se detectó el problema

El síntoma es el clásico «error crítico» de WordPress, pero limitado al escritorio: el acceso a wp-admin se interrumpía por completo, sin más detalle visible para el usuario salvo que ha ocurrido un problema técnico, mientras que la web pública seguía cargando sin incidencias. Al revisar por SFTP la carpeta wp-content/plugins, el plugin con la fecha de modificación más reciente —coincidiendo con el día anterior a la incidencia— resultó ser precisamente esta extensión de Complianz. Renombrar su carpeta (lo que equivale a desactivarlo a la fuerza, ya que WordPress no puede cargar un plugin cuya ruta ha cambiado) restableció el acceso al instante, confirmando que el origen del fallo estaba ahí. Tras verificarlo, se optó por eliminar el plugin directamente en lugar de reactivarlo.

Qué dice el registro de cambios oficial

El historial de versiones publicado en el repositorio de WordPress.org confirma que este no es el primer episodio de errores fatales en el plugin: versiones anteriores tuvieron que corregir expresamente una llamada a un método inexistente que provocaba un error fatal en el almacenamiento de consentimientos, así como un fallo por el que la tabla de base de datos no se creaba durante el asistente de configuración inicial, lo que impedía guardar los registros de consentimiento. Es decir, se trata de un complemento con antecedentes de regresiones críticas entre versiones, algo a tener en cuenta por quienes lo usan en producción.

En el momento de escribir estas líneas, el repositorio oficial de WordPress.org señala la versión 2.1 como la más reciente publicada, sin que se haya localizado en foros o canales públicos un reporte específico que documente esta incidencia concreta con fecha de ayer; es posible que se trate de un problema de compatibilidad puntual con la configuración de PHP, caché o el propio Complianz en los servidores afectados, y no de un fallo generalizado reportado aún por la comunidad.

Qué hacer si os ha pasado lo mismo

Si una web deja de responder justo después de que WordPress actualice automáticamente un plugin, el primer paso es siempre identificar por SFTP o FTP qué carpeta de wp-content/plugins tiene la fecha de modificación más reciente y renombrarla temporalmente (añadiendo, por ejemplo, _OLD al nombre de la carpeta); esto basta para que WordPress lo desactive sin poder acceder al panel, y suele restaurar el acceso en segundos si el plugin es efectivamente el causante. Conviene además revisar los logs de error de PHP del hosting (error_log o el panel de errores que ofrezca el proveedor) para confirmar la causa exacta antes de decidir si se reinstala una versión anterior, se contacta con el soporte del desarrollador o, como en este caso, se opta por eliminarlo y buscar una alternativa.

Import Excel to Table: un plugin de WordPress sin dependencias para convertir un Excel en una tabla con shortcode

NOTA: De los 3 sitios en los que he probado este plugin, solo en Indaga.net (aquí) se recarga la página del plugin después de la importación. No obstante, funciona en todos. Puede que sea un conflicto entre plugins o que los otros sitios utilizan Gutenberg e Indaga,net no; lo veré más adelante…

Valencia, 10/08/2026, G.B.
Hay una necesidad que se repite mucho en sitios WordPress pequeños y medianos: alguien tiene un listado en Excel o en LibreOffice Calc (un directorio de contactos, un catálogo, una lista de recursos) y quiere que aparezca como una tabla navegable en una página web, sin tener que copiar y pegar HTML cada vez que cambian los datos. Para cubrir ese caso he desarrollado Import Excel to Table, un plugin de WordPress que importa archivos .xlsx o .ods a una tabla propia de la base de datos y los muestra mediante shortcode, con ordenación por columna, paginación y enlaces automáticos.

El problema de partida: nada de dependencias externas

La primera versión se apoyaba en PhpSpreadsheet, la librería PHP de referencia para leer hojas de cálculo. Funciona muy bien, pero arrastra una carpeta vendor/ de varios megabytes y miles de archivos pequeños, que hay que generar con Composer e instalar en el servidor. En un hosting compartido con límite de número de archivos —como suele pasar cuando alojas varias webs en el mismo plan— eso puede ser un problema real, y además complica el despliegue si solo tienes acceso por SFTP, sin terminal.

La solución fue reescribir el lector de hojas de cálculo desde cero, apoyándome únicamente en extensiones que ya vienen integradas en PHP: ZipArchive, SimpleXML y DOM. Un archivo .xlsx o .ods no es más que un ZIP con XML dentro, así que se puede leer directamente sin ninguna librería externa. El resultado: cero dependencias, ninguna carpeta que subir aparte del propio plugin, y una copia por SFTP es suficiente para desplegarlo.

Qué hace

  • Importa .xlsx y .ods desde el panel de administración, usando la primera fila del archivo como encabezados de columna.
  • Admite varias importaciones independientes, cada una con su propio identificador. Un directorio de contactos, un catálogo de productos y una lista de recursos pueden convivir en el mismo sitio sin pisarse: reimportar uno de ellos no afecta a los demás.
  • Sustituye los datos de forma transaccional: si la importación falla a mitad de proceso, no se pierden ni los datos antiguos ni se queda la tabla a medias.
  • Muestra cada importación con su propio shortcode, indicando su identificador:

    No hay datos para mostrar (identificador: contactos).

    ,

    No hay datos para mostrar (identificador: catalogo).

    , etc. Pueden convivir varios en la misma página, cada uno con su propio control de orden y paginación, sin interferir entre sí. Con estas funciones:
    • Ordenación por columna (ascendente/descendente).
    • Paginación (25 registros por página por defecto, configurable).
    • Enlaces automáticos: si una celda contiene un correo o una URL —ya sea porque LibreOffice/Excel la convirtió en hipervínculo al escribirla, o simplemente porque el texto tiene forma de email o dirección web—, se muestra como un enlace clicable.
    • Fechas y horas con formato español (DD/MM/AAAA, HH:MM), en lugar del formato ISO interno que usan estos archivos por dentro.
  • Panel de administración con listado de importaciones: identificador, número de registros, fecha de la última importación, el shortcode ya escrito para copiar, vista previa de los datos y borrado individual (o de todas a la vez).
  • Control de acceso opcional: si los datos son sensibles, se puede restringir la visualización a usuarios con sesión iniciada.

Seguridad

Al ser un plugin que acepta subida de archivos y muestra datos en el frontend, se ha cuidado especialmente:

  • Solo usuarios con capacidad manage_options pueden importar o borrar datos, con verificación de nonce (CSRF) en cada acción.
  • El archivo subido se valida por extensión y por tipo MIME real (no basta con renombrar un archivo a .xlsx), con un límite de tamaño de 5 MB.
  • Todo el HTML de salida se escapa correctamente, y tanto los parámetros de ordenación como el identificador de cada importación se validan contra listas seguras antes de usarse en ninguna consulta.
  • Cada registro guardado lleva un hash de integridad que se comprueba al leerlo, como salvaguarda frente a manipulaciones directas de la base de datos.

Compatibilidad

  • WordPress: declarado a partir de la versión 5.0, aunque en la práctica solo usa funciones muy estables de la API ($wpdb, dbDelta(), wp_nonce_field(), add_shortcode()…) disponibles desde mucho antes. Funciona igual con el editor de bloques o con Classic Editor, ya que no depende de Gutenberg.
  • PHP: declarado a partir de 7.4, pero el código en sí no usa ninguna sintaxis exclusiva de PHP 8.x (nada de match(), propiedades readonly, operador nullsafe…), así que en la práctica sería compatible desde PHP 7.0. Probado sin avisos de deprecación hasta PHP 8.3.
  • Extensiones PHP necesarias: zip, SimpleXML, DOM y fileinfo — las cuatro vienen activadas por defecto en la gran mayoría de hostings. Si alguna faltara, el plugin lo detecta y avisa en el panel de administración en vez de fallar en silencio.
  • Actualización sin fricción: si ya tenías datos importados con una versión anterior del plugin (de cuando solo existía una tabla), al actualizar por SFTP se conservan automáticamente bajo el identificador default, y el shortcode

    No hay datos para mostrar (identificador: default).

    sin atributo sigue funcionando exactamente igual que antes.

Plugins similares en el repositorio

Antes de escribir el plugin conviene mirar qué hay ya disponible. En el ecosistema de WordPress existen varias alternativas con un planteamiento parecido, aunque ninguna comparte exactamente el mismo enfoque:

  • wpDataTables — el más completo y establecido del mercado. Importa .xls, .ods y .xlsx y genera tablas totalmente personalizables, con filtros avanzados, gráficos y edición tipo Excel en el frontend. Es mucho más potente que Import Excel to Table, pero también mucho más pesado: es de pago (el plan gratuito es limitado) y no está pensado para minimizar dependencias.
  • WP Convert Excel Data To Table And DB — es el que más se parece en planteamiento: importa el Excel a la base de datos de WordPress, gestiona los registros desde un menú propio y permite editarlos manualmente. No es posible comprobar cómo está construido por dentro, pero conceptualmente es el competidor más cercano.
  • Excel Tables (de WP Missing) — más sencillo: se sube el archivo a la biblioteca de medios, se convierte automáticamente en tabla y se inserta con shortcode. Gratuito y minimalista, pero sin ordenación ni paginación configurables.
  • WP Table Manager — apuesta por sincronizar la tabla de forma continua con el archivo Excel de origen, en vez de hacer una importación puntual.

Ninguno de ellos presume de estar construido sin dependencias externas: lo habitual es que usen PhpSpreadsheet u otra librería similar por debajo. Esa es la principal diferencia de Import Excel to Table frente a las alternativas: mismo resultado funcional que herramientas mucho más grandes, pero sin carpeta vendor/ que instalar, pensado explícitamente para hostings con límite de archivos y despliegue solo por SFTP.

Limitaciones a tener en cuenta

Por ser un lector escrito a mano en lugar de una librería completa, hay algunos casos que no cubre: solo lee la primera hoja del libro, no evalúa fórmulas (toma el último valor calculado guardado en el archivo), y no procesa celdas combinadas ni archivos .xls del formato binario antiguo (hay que convertirlos antes a .xlsx). Para el caso de uso habitual —una o varias tablas de datos simples que se actualizan de vez en cuando— no supone ningún problema.

Un ejemplo insertando el shortcode

TítuloAutorEditorialURL reseña
Historia del rey transparenteRosa Monterohttps://www.rosamontero.es/novela-historia-rey-transparente.html
Verás el cielo abiertoManuel Vicenthttps://www.lecturalia.com/libro/971/veras-el-cielo-abierto
PyramidsTerry Pratchetthttps://www.terrypratchettbooks.com/books/pyramids/
A Stroke of the Pen. The lost StoriesTerry Pratchetthttps://en.wikipedia.org/wiki/A_Stroke_of_the_Pen:_The_Lost_Stories
Tales of Beasts and BugsTerry Pratchetthttps://www.goodreads.com/book/show/243249948-puffin-tales-of-beasts-and-bugs
The Witch's Vacuum CleanerTerry Pratchetthttps://www.terrypratchettbooks.com/books/the-witchs-vacuum-cleaner/
En el nombre del cerdoPablo Tussethttps://www.lecturalia.com/libro/2053/en-el-nombre-del-cerdo
De un plumazoTerry Pratchetthttps://es.wikipedia.org/wiki/De_un_plumazo:_Las_historias_perdidas
Raising SteamTerry Pratchetthttps://www.casadellibro.com/ebook-raising-steam-ebook/9781448171194/2910198?srsltid=AfmBOoqjltpPc3uTj_MUBsG4jPFXbPOypsVgoneIejfTWw_MlfcS209e
Learn To Think Using Thought ExperimentsPatrick Kinghttps://es.everand.com/book/451891020/Learn-To-Think-Using-Thought-Experiments-How-to-Expand-Your-Mental-Horizons-Understand-Metacognition-Improve-Your-Curiosity-and-Think-Like-a-Philo
I Shall Wear MidnightTerry Pratchetthttps://www.casadellibro.com/libro-i-shall-wear-midnight/9780385611077/1777595?srsltid=AfmBOorlSdywjA6vc1mWe62bMD2xuQIEi6TIb8HoCXLt8o6j9NOG0rBT
The Shepherd's CrownTerry Pratchetthttps://discworld.fandom.com/wiki/The_Shepherds_Crown
El perfumePatrick Süskindhttps://www.casadellibro.com/libro-el-perfume/9788432248986/17422367
Lores y damasTerry Pratchetthttps://www.casadellibro.com/libro-lores-y-damas-mundodisco-14--las-brujas-4--los-magos-4/9788497934725/986230
La luz fantásticaTerry Pratchetthttps://www.casadellibro.com/libro-la-luz-fantastica-mundodisco-2--rincewind-2/9788497931786/947072
Los asquerososSantiago Lorenzohttps://www.lecturalia.com/libro/99283/los-asquerosos
La sombra del vientoCarlos Ruiz Zafónhttps://www.carlosruizzafon.com/la-sombra-del-viento/
Small GodsTerry Pratchett
Going PostalTerry Pratchetthttps://es.wikipedia.org/wiki/Cartas_en_el_asunto
Unseen AcademicalsTerry Pratchetthttps://www.casadellibro.com/libro-unseen-academicals-discworld-35/9780552153379/1699432?srsltid=AfmBOoqwAdPF70_jRtJq5sU9qUhTIu1GGoT7bT3GtFtc-7AnEwHDAS_e
El palacio de la medianocheCarlos Ruiz Zabónhttps://www.lovelybooks.de/autor/Carlos-Ruiz-Zafn/El-Palacio-de-la-Medianoche-Midnight-Palace-144488700-w/
The Colour of MagicTerry Pratchetthttps://www.terrypratchettbooks.com/books/the-colour-of-magic/
Guards, Guards!Terry Pratchetthttps://www.goodreads.com/book/show/64216.Guards_Guards_
Equal RitesTerry Pratchetthttps://discworld.fandom.com/wiki/Equal_Rites
Marina (ebook) -Carlos Ruiz Zafón -https://www.casadellibro.com/libro-marina/9788408004349/1964564

Total de registros: 264

NOTA: Import Excel to Table nació como una prueba en este mismo sitio, indaga.net, antes de valorar su uso en otros proyectos con necesidades de datos tabulares más específicas.

Descargar archivo .zip que he subido y compartido en mi cuenta de pCloud. Aunque pCloud es seguro, comprueba siempre que los archivos que descargues estén limpios de virus: import-excel-to-table.zip

Plugin de WordPress Comet Cache: lo borro

Una nota rápida…

Valencia, 03/08/2026
Parece ser que el plugin Comet Cache lleva desde 2017 sin actualizarse realmente, aunque sigue en el repositorio de plugins de WordPress (situación realmente extraña. ..). Veamos:

  • Última actualización real: 2017 (versión 170220). La ficha muestra «actualizado hace 1 año» porque WordPress.org a veces refresca metadatos aunque el código no cambie, pero el changelog no miente: ocho años sin tocar el core del plugin.
  • Las reseñas más recientes (incluida una de diciembre de 2025) lo describen literalmente como un «zombie» que aparece como «actualizado recientemente» en el listado de plugins pero cuya última versión real sigue siendo la de 2017. wordpress
  • El «Tested up to 6.9.5» que aparece en la ficha es automático/cosmético, no significa que alguien lo haya probado de verdad contra esa versión de WP.
  • Un plugin de caché sin mantenimiento es un riesgo de seguridad mayor que uno normal, porque toca puntos sensibles: wp-config.php, advanced-cache.php, reglas de .htaccess, interceptación de requests antes de que cargue WordPress. Si aparece una vulnerabilidad ahí, nadie la va a parchear.

Por eso y por lo que acabo de leer lo he desinstalado,  tanto aquí como en Puntocomunica.com,. Mantengo Autoptimize e instala el plugin WP Fastest Cache.

Creo que es una buena elección. Ya veremos…

🔥🧱Qué es un cortafuegos para tu web y por qué Wordfence te lo pone fácil (en WordPress)

Imagina que tu web de WordPress es una tienda física. Tiene una puerta de entrada por la que pasan clientes todos los días: algunos vienen a comprar, a leer, a contactarte. Pero también hay quien se acerca con malas intenciones: intentar forzar la caja registradora, colarse por la trastienda o hacerse pasar por un empleado.

Un firewall de aplicaciones web, o WAF por sus siglas en inglés, es básicamente el portero de tu tienda. Revisa a todo el que entra antes de dejarlo pasar, y si detecta que alguien viene con herramientas para hacer daño, lo frena en seco.

¿De qué te protege exactamente?

Sin entrar en tecnicismos, los ataques más habituales que sufren las webs de WordPress son estos: Continuar leyendo «🔥🧱Qué es un cortafuegos para tu web y por qué Wordfence te lo pone fácil (en WordPress)»

Crear atributos en WooCommerce y mejorar tiempo de carga

woocommerceDos interesantes artículos de woodemia.com sobre la optimización de Woocommerce, el plugin de WordPress que permite implementar una tienda online totalmente funcional en una web. Woocommerce incluye todo lo necesario para empezar a vender en línea.

Añadir más productos a la página de tienda de Woocommerce

woocommercePágina de la documentación de Woocommerce en donde se explica cómo cambiar el número de productos en la página de tienda de Woocommerce. Código a añadir en el archivo functions.php:

// Display 24 products per page. Goes in functions.php add_filter( 'loop_shop_per_page', create_function( '$cols', 'return 24;' ), 20 );

https://docs.woocommerce.com/document/change-number-of-products-displayed-per-page/

El plugin ‘Display Widgets’ de WordPress, ‘comprometido’

El plugin Dispaly Widgets de WordPres, compometido
Post recuperado de KnowHow…

Valencia, 15/09/2017, G.B.

Hace un par de días que intento actualizar el plugin de WordPress ‘Display Widgets‘ sin éxito. Al principio pensaba que era alguna incompatibilidad con algún otro plugin, pero me pasaba en sitios distintos, con distintas combinaciones de plugins. 
He estado apunto de desactivar todos los plugins e ir activándolos uno a uno hasta descubrir cual era el que provocabala stución anómala e WordPress: actualizar un plugin y que te vuelva a ‘pedir’ la actualización del mismo, indefinidas veces…
La verdad es que me he ‘mosqueado’ bastante, pensando que mi ‘sistema’ estaba comprometdo, o que había alguna incompatibildad entre las actualizaciones de plgins (cos, por desgracia, demasiado común). Al final, he dado con un tweet que explica que el problema viene del propio plugin Display Widgets. La solución, por desgracia, es desactivarlo. Es una verdadera lástima, ya que el plugin cumplía muy bien su función.

Os dejo un enlace explicativo al respecto (en inglés):
https://pagely.com/blog/2017/09/malicious-code-display-widgets/