Manhattan, de Goh Rhy Yan

Una de las características más exitosas de WordPress es que ha sabido incentivar una comunidad de desarrolladores que extienden la funcionalidad básica de este gestor de contenidos a través de la creación de plugins. Eso, y que la cuota de mercado de WordPress no ha parado de crecer en los últimos años es clave para atraer talento.

Los plugins de WordPress son la leche. Saber que si necesitas personalizar tu web lo puedes hacer con tan solo buscar un plugin que haga lo que necesitas da mucha tranquilidad. Y además reduce los costes una barbaridad.

No tener que (en la mayoría de los casos) desarrollar soluciones a medida es un alivio y democratiza el acceso a tener páginas web complejas por una fracción del precio que costaría hace unos años.

Escena de lluvia en Blade Runner.
Yo… he visto cosas que vosotros no creeríais. Detectar plugins en llamas más allá del editor. He visto bugs brillar en la oscuridad cerca de la base de datos de WordPress. Todos esos momentos se perderán… en el tiempo… como lágrimas en la lluvia. Es hora de escribirlos.

Pero no todo es de color de rosa. Al seleccionar un plugin para WordPress hemos de ir con pies de plomo. La popularidad de WordPress además de atraer talento también atrae a desarrolladores con menos experiencia que a veces crean plugins que no tienen los niveles de calidad deseados. Y detectarlos no es tan sencillo como contar el número de valoraciones positivas que tienen o en cuántos sitios están instalados. Es algo mucho más complejo.

Si algo hemos sufrido en Nelio desde que empezamos a ver instalaciones de WordPress de clientes es la cantidad de basura que podemos encontrar instalada allí. Hemos visto cosas que no creeríais…

Por este motivo hoy explicaré algunos de los problemas más comunes y curiosos que hemos encontrado durante todos estos años con los plugins para WordPress.

Lista de problemas de los plugins para WordPress

No están todos los que son, pero sí son todos los que están. Aquí os dejo con la lista de problemas que puedes encontrar con los plugins de WordPress. Son problemas genéricos y no vamos a dar nombres concretos de plugins que los padecen, pero existen y hay que ir con cuidado para así evitarlos.

Abusar de las tablas adicionales

La base de datos de WordPress es territorio comanche. Muchos plugins la extienden para añadir sus propias tablas. Esto no tiene porqué estar mal, pero en la mayoría de ocasiones no es necesario.

Base de Datos de WordPress
Tablas principales de la base de datos de WordPress.

La base de datos de WordPress es lo suficientemente genérica para no tener que añadir nuevas tablas para que las use tú plugin. Entonces, ¿porqué un desarrollador ve la necesidad de añadir más tablas a WordPress? La respuesta es bastante fácil: comodidad y desconocimiento.

Muchas veces es más sencillo para alguien poco experimentado en WordPress meter tablas adicionales y hacer consultas directamente en SQL para leer y modificar datos. Esto, además de poder ser un agujero de seguridad si no se hace bien, te lo evitas utilizando las tablas meta.

Si quieres extender información de los usuarios, tienes la tabla wp_usermeta. Lo mismo pasa para las contenidos (wp_postmeta), comentarios (wp_commentmeta) o incluso términos de taxonomías (etiquetas y categorías, con la tabla wp_termmeta).

WordPress proporciona métodos para leer y modificar esta meta-información de forma estándar y segura. A no ser que tengas una justificación en términos de rendimiento, querido desarrollador WordPress, mejor no utilices tablas adicionales en tus plugins.

Nelio A/B Testing

Pruebas A/B nativas en WordPress

Usa tu editor de páginas favorito en WordPress para crear variaciones y lanza pruebas A/B con solo un par de clics. No se necesita saber nada de programación para que funcione.

Cargar scripts y estilos mal

La mayoría de plugins de WordPress necesitarán tarde o temprano cargar sus propios archivos JavaScript y CSS, a veces en el panel de administración de WordPress y a veces en el frontal de la web. Y lo triste es que esto es algo que se suele hacer mal.

Spiderman llevando a un hombre al fuego en vez de salvarle.
Cargar estilos CSS y archivos JavaScript en WordPress es algo que lamentablemente, pocos desarrolladores hace bien, todavía actualmente.

Para añadir un estilo CSS o un archivo JavaScript en WordPress hay que encolarlo en la cola estándar de WordPress. Para esto, primero se registra con las funciones wp_register_style y wp_register_script, y luego se encola con wp_enqueue_style y wp_enqueue_script, respectivamente.

Ten en cuenta que estas funciones permiten definir las dependencias que tus estilos y scripts tienen, por lo que así WordPress se encarga de gestionar las dependencias correctamente y encolar sólo lo que necesita.

Cualquier otra cosa es hacerlo mal. Y aquí incluso la documentación de desarrollador tiene la culpa. Mírate los ejemplos que vienen en el hook wp_head en el Codex de WordPress. Los desarrolladores cogerán esto como referencia, y luego pasa lo que pasa, que se rompen las cosas ?.

¡Ah! Y ni se te ocurra sacar el lanzallamas y utilizar wp_dequeue_script o wp_dequeue_style para desencolar los scripts o estilos de los demás. Muchas veces hemos visto como plugins desencolan la versión de jQuery que viene con WordPress para añadir la suya propia (que suele estar desactualizada) y a partir de ahí todo deja de funcionar…

Si detectas un plugin que no carga correctamente los scripts y estilos siguiendo las directrices de WordPress, esto es motivo suficiente para desactivarlo de tu instalación ya mismo.

No limpiar la base de datos al desactivar

Este es otro clásico de los plugins para WordPress, y quizás el más común que te vas a encontrar. Para poder funcionar, los plugins para WordPress necesitarán añadir registros en tu base de datos. El problema aquí es que cuando desactives el plugin, lo habitual es que esos registros queden en las tablas de tu base de datos por los siglos de los siglos.

Los plugins para WordPress no suelen borrar los datos que crean en tu base de datos cuando los desactivas. Y no, no hay un camión de la basura que pase de vez en cuando y se lleve estos datos inútiles.

Un plugin para WordPress debería eliminar las tablas adicionales que ha creado y los datos que ha metido en las tablas estándar cuando el usuario lo desactiva. Pero pasa muy pocas veces. Te animo a ir a tu base de datos y echarle un ojo. Seguro que encuentras basura inútil e inservible.

Dialogo de desactivación de Nelio Content.
Al desactivar nuestros plugins verás un diálogo tal que así, donde puedes desactivarlo temporalmente o bien eliminar todo.

Si el desarrollador es cuidadoso, al desactivar el plugin en tu WordPress te preguntará si quieres desactivarlo temporalmente o bien quieres hacerlo de forma permanente. En tal caso, borrará todos los datos que ha ido añadiendo durante su funcionamiento, sacando así la basura para dejar todo limpio.

No guiar al usuario

Cuando instalas un plugin para WordPress y lo activas, habitualmente esperas que aparezca un menú nuevo en el Escritorio de WordPress donde encontrar las funciones del plugin. Pero esto no siempre es así.

Hombre confuso
Si después de instalar y activar un plugin para WordPress te sientes así, es que el desarrollador algo ha hecho mal.

Hay veces en las que el nuevo plugin añade un menú dentro de otro menú ya existente, que suele ser el menú de Herramientas o el de Ajustes. Por lo que el usuario tendrá que investigar a ver dónde narices está el menú que el nuevo plugin que acaba de instalar y activar incluye.

Suele ser una buena práctica describir en el archivo README.txt del plugin qué es lo que va a suceder una vez que actives el plugin en tu WordPress. De este modo reduces la ansiedad del usuario y le haces la vida un poquito más fácil. De lo contrario, si no encuentra dónde están las funciones que el plugin añade, lo normal será que lo acabe desactivando, y como desarrollador eso es lo último que quieres que pase.

Quizás pienses que esto de no encontrar dónde están las cosas del plugin para WordPress es algo que sólo le pasa a los más novatos. Pero esto no es así. Recientemente, instalando cierto plugin para hacer cierta cosa (te recuerdo que iba a evitar dar nombres ?), me encontré en esta misma tesitura. No encontraba dónde estaban los ajustes del plugin que acababa de activar. Y si me pasa a mí, que se supone que llevo tiempo de sobras trabajando con WordPress, esta misma situación es terrible para alguien con menos experiencia.

Cambiar la interfaz de usuario de WordPress

WordPress es sencillo de usar, o eso dicen. Y una parte importante de esto es gracias a la interfaz de usuario que WordPress incluye por defecto. Esta interfaz es sencilla en un WordPress recién instalado, pero se va complicando una vez vamos añadiendo más y más plugins.

Además, un problema habitual de los plugins para WordPress es que éstos a veces utilizan una interfaz de usuario totalmente diferente a la que los usuarios esperan encontrar en el escritorio de WordPress.

Homer en el mundo real andando por la calle mientras las personas le miran
Si estás en WordPress, pero no parece WordPress, estás confundiendo a tus usuarios innecesariamente.

Lo sé, la interfaz de usuario de WordPress es algo sosa desde el punto de vista de un diseñador, pero a veces es mucho más inteligente seguir los mismos estilos y la misma experiencia de usuario a la que tus usuarios están acostumbrados que optar por una solución totalmente diferente, por mucho que te parezca más moderna o acertada.

En nuestros plugins intentamos mantener los mismos estilos de WordPress y poner cada elemento de la interfaz de usuario donde creemos que el usuario espera que aparezca. Pero hemos visto muchas interfaces de plugins que poco o nada se parecen a WordPress, confundiendo a los usuarios.

La recomendación es que si eres el diseñador de un plugin para WordPress sigas las guías de estilo de WordPress, e incluso reutilices los componentes que éste proporciona ahora para crear interfaces en React, exportados directamente de la interfaz del editor de bloques Gutenberg. Nosotros los estamos usando en la renovación que estamos haciendo de Nelio A/B Testing y son geniales.

Saltarse los límites de su propiedad

El Escritorio de WordPress tiene dos tipos de zonas bien diferenciadas, desde el punto de vista de un desarrollador. Por un lado tenemos las zonas privadas, que son esas páginas que un plugin concreto añade. Dentro de estas zonas sólo deberían encolarse scripts y estilos CSS incluidos por el plugin al que pertenecen esas páginas.

Por otro lado, tenemos las zonas comunes, que son todas aquellas que vienen por defecto en WordPress y a las que cualquier plugin puede acceder para introducir sus funciones. Ejemplos de zonas comunes son el editor de contenidos, el editor de menús o widgets, los ajustes, etc.

Cañería por la que sale una masa densa que parece mierda
Si tu plugin se ha roto, es posible que la culpa la tenga otro plugin que está ensuciando los estilos o rompiendo tus scripts con código basura.

Los plugins bien programados, aquellos que siguen las directrices de WordPress, encolarán los scripts y los estilos que afectan a su zona privada solamente en esta zona privada. Esto quiere decir que cuando encolan estos recursos tienen una condición en el código que viene a decir que si están en una página privada de su propiedad, encolarán el recurso. En caso contrario, no lo harán.

Lamentablemente, hay muchos plugins que se «olvidan» de incluir esta condición en su código. Esto causa que su código JavaScript y sus estilos se carguen en todas las páginas siempre, algo que puede romper las otras páginas comunes o incluso las privadas de otros plugins.

Detectarlo es más sencillo de lo que parece. Si estás usando un plugin y su interfaz se ve rota, es muy posible que otro plugin esté metiendo JavaScript o CSS donde no debe y esté rompiendo los estilos y el comportamiento del primer plugin. Lo hemos visto, nos ha pasado a nosotros (que nos rompan nuestra interfaz) y, lamentablemente, seguirá pasando.

No seguir buenas prácticas de programación

No hace falta ser el mejor hacker del mundo para programar en WordPress, pero unos mínimos de calidad a la hora de programar son de esperar.

Una de las bondades (sino la mayor) de WordPress es su filosofía de código abierto. Por lo que explorar el código fuente de los plugins es algo que siempre podrás hacer (por lo menos de aquellos que está en el repositorio oficial).

Hombre tecleando con los pies
Ser cuidadoso programando se nota con tan solo echar un ojo al código que generas. Hay mucho plugin ahí fuera que da pena de ver (desde el punto de vista de su código fuente).

Si lo haces, encontrarás de todo: código que da gusto ver y código que te hará llorar. Y esto no quiere decir que uno sea peor que el otro desde el punto de vista de funcionamiento. Pero si ves código bien documentado, bien indentado y que además está estructurado siguiendo una distribución de archivos y directorios lógica, habrás encontrado el santo grial.

Si el código de un plugin para WordPress da gusto verlo, seguramente sea porque el programador es cuidadoso y pulido, lo que es un claro signo de calidad.

Abrir agujeros de seguridad

Un plugin para WordPress no es más que un conjunto de código, habitualmente PHP y JavaScript, que extiende la funcionalidad de WordPress. Este código con bastante seguridad obtendrá datos del usuario y acabará renderizando información por pantalla.

Gato tecleando efusivamente
La mayoría de veces es sin querer, pero si no validas los datos y los escapas, estás abriendo más puertas de las que deberías a posibles atacantes.

Si no lo hace bien, es posible que al introducir datos y al escribirlos por pantalla esté añadiendo agujeros de seguridad si no trata esos datos correctamente. En WordPress se hace mucho hincapié en validar y sanitizar los datos de entrada y escapar los datos en la salida.

Hay montones de funciones para validar los datos y asegurar que lo que el usuario te pasa es realmente lo que toca y así evitar inyección de código. Si el desarrollador del plugin no las usa es por vagancia o desconocimiento. Ten cuidado con lo que acabas instalando en tu WordPress o te acabarás arrepintiendo.

Realizar actividades poco adecuadas

Siguiendo con el apartado anterior, hay plugins ahí fuera que viene de fuentes de dudosa procedencia. A veces, por ahorrarte cuatro euros buceas por lugares oscuros de Internet en busca de un archivo .zip que contenga el plugin que deseas pero por el que no quieres pagar.

Hombre diciendo que va a entrar a la deep web
Todos lo sabemos y alguna vez lo hemos hecho. Por ahorrarnos cuatro duros bajamos a las zonas oscuras de Internet en busca de algo gratis.

Cuando lo encuentras, todo es felicidad, hasta que te das cuenta de que ese plugin viene con regalo. Desde rastreadores, minadores de criptomonedas, spam, hasta incluso código malicioso que puede hacerse con el control de tu web. Puedes encontrar de todo.

Desconfía de la procedencia de los plugins que encuentras por ahí. El repositorio oficial de WordPress y los marketplaces más conocidos son la única fuente fiable donde adquirir tus plugins para WordPress. Piensa que estar dentro de esos repositorios conlleva pasar toda una serie de pruebas de calidad para poder permanecer allí. Fíate sólo de los lugares conocidos y huye de plugins obtenidos de fuentes de poca confianza.

No aportar valor

El peor error que puede cometer un plugin para WordPress es no aportar valor alguno a sus usuarios. Como desarrollador, a veces tienes ideas de bombero que crees que pueden ser muy útiles para los demás, y la verdad es que si el valor que aporta tu plugin es ínfimo, el número de usuarios que acabará teniendo será parecido.

Son muchos los plugins dentro del repositorio oficial de WordPress cuyo valor es escaso. Pero esto es algo que pasa en cualquier marketplace o repositorio de aplicaciones.

Si como desarrollador quieres destacar sobre el resto de competencia, céntrate en aportar valor a tus posibles usuarios para que tu plugin acabe cogiendo la popularidad necesaria para convertirse en un éxito dentro de WordPress.

Elegir plugins para WordPress es complicado

No todo se basa en el número de revisiones de usuarios y en contar estrellas. Elegir un buen plugin para WordPress es complicado. Hay muchas sorpresas ocultas que sólo se descubren al analizar el código fuente del propio plugin. Y si no tienes los conocimientos para entenderlo, te la pueden colar.

Fíjate en los comentarios que encontrarás en el foro de soporte del plugin dentro del repositorio para ver qué tipo de problemas tiene la gente con este. Prueba el plugin en un entorno controlado y si ves algo raro contacta con el desarrollador para que te ayude.

Si después de esto no estás conforme con lo que ves, busca una alternativa. Hay miles de plugins ahí fuera esperándote. O déjanos un comentario aquí abajo. Siempre andamos buscando ideas de nuevos plugins interesantes para añadir a nuestra colección.

Imagen destacada de Goh Rhy Yan en Unsplash.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad de Nelio Software

Tus datos personales se almacenarán en SiteGround y serán usados por Nelio Software con el único objetivo de publicar tu comentario aquí. Con el envío de este comentario, nos das el consentimiento expreso para ello. Escríbenos para acceder, rectificar, limitar o eliminar tus datos personales.