Creo que para entender las cosas que ven negativas de WordPress los desarrolladores hay que saber primero qué es WordPress… (y comprender a los desarrolladores)
WordPress es una aplicación open source que implementa un Blog. Open Source quiere decir que los fuentes están disponibles. WordPress está hecho en PHP.
Desde el mismo momento que instalamos WordPress en un servidor tenemos un Blog Disponible con posibilidad de publicar y editar nuevos posts. Y se usó en más de 19.000.000 de sitios web lo que es más del 30% de los sitios web existentes. Entonces más allá de que sea «bueno» o «malo» para los desarrolladores, es un standard y es más fácil encontrar gente que haya trabajado con WordPress que con cualquier otro tipo de aplicación o servicio para hacer sitios web.
El que sea open source quiere decir que una vez que instalamos WordPress y lo utilizamos, tenemos la posibildad de modificar el propio WordPress si sabemos PHP. Esto permite que como programadores podamos usar WordPress con mucha facilidad.
No obstante, toda aplicación tiene una arquitectura, que en este caso podemos definir, como un conjunto de formas de resolver y ordenar soluciones que se necesitan así como componentes internos. De ahí que para hacer modificaciones PHP y que queden prolijas, y que no haya que tirar todo a la basura cada vez que sale una nueva versión de WordPress tenemos que respetar su organización interna y su forma de resolver las cosas.
Por otra parte, WordPress, propone poder utilizarlo minimizando los conocimientos de programación. Hay mucha gente que administra sitios WordPress sin saber programar, o delegando aquellas excepcionales tareas que decida resolver «programando». Este esquema de configuración flexible que permitiría hacer «casi todo» sin programar, incluye 2 soluciones básicas.
1.- Plugins
Los plugins alteran o extienden el comportamiento original de wordpress. Por ejemplo existe un plugin muy común que es Woocommerce, que transforma nuestro WordPress en una tienda virtual con productos, precios, envíos, ventas y pagos con distintos medios de pago. Así como hay plugins más sencillos como mostrar un captcha cuando el usuario carga un form.,
Los plugins, simplemente se instalan, se activan, se configuran y tienen esa funcionalidad lista.
2.- Themes
Los temas de WordPress tienen más que ver con la parte visual o de estilo. Tenemos algunos temas que nos permiten unas pocas opciones fijas hechas por un diseñador profesional, y otros temas que nos dan un entorno de edición de la parte visual mucho más amigable que la que provee WordPress.
Cómo afectan los plugins y los themes a los desarrolladores?
Cuando desarrollamos una aplicación, cada parte de ella contribuye al objetivo final de la aplicación, ya sea de contabilidad, música, reserva de hoteles o lo que sea. Entonces en el código encontramos una relación directa entre nuestros módulos, los componentes y el negocio que estamos resolviendo.
En WordPress , mucho de la aplicación tiene que ver, no solo con el negocio, sino con la instalación, desinstalación de plugins / themes y otras características que hace que en algunos casos tenga una complejidad sobredimensionada si se quiere empezar a modificarlo sólo conociendo PHP, por lo que algunos piensan que tienen que aprender muchas más cosas que lo que tendrían que hacer si hicieran una apicación que sólo se dedicara al negocio.
Filters and Actions
Además de estos artefactos de configuración , internamente para programar utiliza 2 conceptos, filters and actions. Los filters y los actions son algo así como funciones internas de WordPress. El hecho de que una actividad que haga se realice por una secuencia de Actions que se ejecutan, afectando parte de su comportamiento por Filters, permite a los desarrolladores agregar Actions en el medio de la secuencia así como eliminar algunas, o reemplazar otras.
Esta flexibilidad permite cosas como por ejemplo, mostrar la lista de productos de la tienda virtual evitando mostrar los precios, o agregar a la visualizacion de cada producto algo más dependiendo de cualquier otra cosa programáticamente como por ejemplo agregar un «Compre Ya» dependiendo del usuario que está mirando el producto.
Esta forma de organización, si bien nos permite incorporar con pocas lineas de código elementos que alteren el funcionamiento normal de wordpress, también nos exigen tener un conocimiento del conjunto de Actions y Filters disponibles que es realmente numeroso. Nuevamente nos añade un conocimiento adicional que no es necesario haciendo una aplicación directamente.
Salirse del Standard
Más allá de que WordPress proponga una forma de modificarlo con «Buenas Practicas» siguiendo los elementos que proveyó para eso, cualquier programador PHP puede modificar las cosas como se le antoje, lo que hace bastante inmantenible y trabajoso cuando se tiene que seguir instalaciones de WordPress que otros desarrolladores dejaron habiendo hecho cambios fuera del standard.
Base de Datos
Cuando hacemos una aplicación, en la base de datos se definen un conjunto de tablas con su estructura que conforman la base de datos . Tal es así que podemos definir tablas como Facturas, Clientes, Sucursales, cada una especializada que tiene las columnas de datos que necesitamos para cada una.
Naturalmente no es la forma de la base de datos de WordPress. Las tablas de Wordrpress tienen que ver naturalmente con Posts, Pages, y «MetaDatos» .
Las tablas de Metadatos son tablas que tienen basicamente la informacion de ID, KEY, VALUE donde podamos definir las estructuras que se nos ocurra.
Si bien este tipo de tablas son muy eficientes para un Blog (que fue por lo que fue hecho WordPress originalmente), son bastante tediosas y confusas si las queremos emplear para otras cosas.
Podemos agregar nuestras tablas pero eso hace que no tengamos disponibles para eso muchas de las funciones que WordPress nos provee para acceder a los datos. También , según sea lo que estemos implementando, en un volúmen de dato importante, terminan no siendo eficientes y hay que pensar en otras soluciones.
WordPress para los que no saben programar
Esta tal vez, además de las ya mencionadas sea la principal razón de por qué los desarrolladores «odian» WordPress. Si bien WordPress propone tener un Blog con solo instalarlo, y provee mecanismos de edición y configuración que cualquier usuario pueda manejar, creo que en temas complejos, es difícil resolver «todo» sin enfrentarse con PHP o Javascript.
No obstante, para las soluciones comunes hay muchas «recetas» inmediatas en internet que permiten arribar a algunas soluciones agregando estas o aquellas líneas de código aquí o allá.
Esto logra que muchos que saben programar poco o que simplemente no se dedican a la programación , puedan lograr cosas interesantes con WordPress.
Entiendo que algunos desarrolladores pueden sentir «celos» de estos «aprendices de brujo» que tocando unas pocas cosas, consiguen para sus clientes logros con los que ganan su felicitación por un precio más bajo y en un tiempo más corto que lo que conseguiría un desarrollador cuidadoso.
Conclusion
Como desarrollador, tampoco me gusta la estructura de WordPress ni de su base de datos, pero no cabe duda que frente a los más de 19.000.000 de instalaciones, no puedo descalificarlo simplemente porque no siga pautas que sigo en otras aplicaciones.
Me parece que WordPress es una excelente herramienta, la que yo elijo hoy para hacer sitios web como https://ofwoodworking.com/ o https://ofwhale.com/ o este mismo sitio. Y la rapidez con la que me permite hacer estas cosas y el retorno de inversion es excelente.
Prefiero WordPress para un sitio web más que un programa smart, porque sé que en el mercado me será más fácil encontrar gente que lo pueda seguir si le pasa algo al desarrollador que me hizo el sitio.