WordPress es uno de los CMS más populares y uno de los más utilizados en Internet. Además tiene detrás una comunidad de usuarios enorme. Lo que posiciona a WordPress como una de las herramientas más utilizadas cuando vamos a desarrollar un sitio web, una tienda online, es la más recomendada a la hora de hacer un MVP para una startup, etc.
El problema es que entre los desarrolladores PHP hay un poco de odio hacia WordPress. Es cierto el código de PHP es un poco desastre, pero funciona. Y funciona bien. Y como a veces pasa, el problema no esta en el software sino en como las personas se relacionan con ese software.

Una de las ventajas de WordPress es que es «ultrapersonalizable», tenemos miles de themes(tanto gratuitos como de pago) para cambiar el aspecto, tenemos plugins(47.768 en este momento) que permiten personalizar aspectos de WordPress. Por contra tanta cantidad de plugins hacen que sea difícil encontrar a los buenos (bajo un punto de vista de bien desarrollados y cuidados), del mismo modo la manera en la que WordPress esta diseñado hace que a veces el sistema se vuelva lento.
La solución, que nos pongamos manos a la obra para ser buenos desarrolladores de software y no montar WordPress sin pensar en pros y contras. ¿Cómo? Fácil, integrándonos en la comunidad de WordPress, entendiendo como funciona WordPress, aprendiendo a crear «child templates», investigando como funcionan los hooks, leyendo el código de los plugins y aplicando nuestro propio criterio de buenos profesionales. Además, si ya hemos trabajado con PHP de manera profesional debemos integrar todo lo que ya sabemos de PHP para hacer que el desarrollo de WordPress sea más «profesional».
Ahora vamos a explicar paso a paso los puntos a tener en cuenta para profesionalizar WordPress
Utiliza Composer
Ya hemos hablado de como sacarle partido a composer, así que vamos a ello. Hace un tiempo encontré esta charla de Asier Marques en Desymfony (https://youtu.be/EIA7-cE_FH0) donde muestra que haciendo uso de wpackagist podemos instalar WordPress de una manera sencilla solo con un composer.json como este:
{
"name": "acme/brilliant-wordpress-site",
"description": "My brilliant WordPress site",
"repositories":[
{
"type":"composer",
"url":"https://wpackagist.org"
}
],
"require": {
"aws/aws-sdk-php":"*",
"wpackagist-plugin/akismet":"dev-trunk",
"wpackagist-plugin/captcha":">=3.9",
"wpackagist-theme/hueman":"*"
},
"autoload": {
"psr-0": {
"Acme": "src/"
}
}
}
Lo más importante de este fichero es que estamos usando PHP actual, de manera profesional. Tenemos las versiones concretas de los plugins que queremos y además podemos adaptar mucho más WordPress a nuestras necesidades.
Utilizar un entorno controlado
Como buenos profesionales, debemos dejar de lado todos los problemas de Apache, Nginx, Mysql, .htaccess. Y cuando decimos dejar de lado, me refiero a encontrar la manera de minimizarlos teniendo un entorno controlado, estable y replicable. Se sea teniendo ficheros de configuración controlados, usando Vagrant o incluso Docker, es necesario que podamos tener un sistema que funcione.
En Github he creado un pequeño repositorio con docker listo para usar: https://github.com/jeslopcru/wordpress-development.
Para ello, teniendo docker-composer instalado solo tenemos que clonarnos el repositorio y ejecutar los comandos siguientes:
git clone git@github.com:jeslopcru/wordpress-development.git
cd wordpress-development
make up
make install
Solo tenemos que añadir a nuestro
/etc/hosts
la dirección docker.dev, yo por ejemplo utilizo aun «docker-machine» y tengo en mi etc/hosts 192.168.99.100 docker.dev
Accedemos a http://docker.dev:8080 y listo 🙂 accederemos a nuestra instalación de WordPress. Del mismo modo si queremos acceder al panel de administración de WordPress iremos a http://docker.dev:8080/_wp/wp-admin/. Si accedemos a http://docker.dev:8090 veremos a phpmyadmin.
Que contiene esta instalación
Contiene un docker-composer listo para usar. Dentro de esta «network docker» encontraremos:
- un Nginx listo para usar
- una base de datos MariaDB
- PHP7 instalado como FPM
- una instalación de phpmyadmin
- una instalación de WordPress con Composer
- un fichero makefile para que todo sea más sencillo 😉
Así que solo escribiendo en un terminal make
tendremos a mano todos los comandos necesitamos.
Sólo el desarrollador es Administrador
Una de las ventajas de WordPress es que es muy flexible, y desde el panel de administración se puede hacer de TODO. Desde crear un post o cambian la configuración de un plugin, hasta modificar el código fuente y creéme eso no es bueno. Ni para ti como desarrollador, ni para quien utiliza día a día WordPress. Lo mejor es crear usuarios con distintos roles (contributor, author, editor,…) y no permitir que estos usuarios puedan instalar plugins, ni nada parecido.
Revisa los plugins y los themes
Seguro que necesitamos todos esos plugins, hay que tener cuidado y no cargar en exceso nuestro WordPress. Del mismo modo mi recomendación es que a la hora de instalar un plugin lo hagamos utilizando composer. Si el plugin no tiene composer… quizás sería mejor utilizar otro. No digo que el plugin se malo, sino que tendrás otro frente abierto a la hora de actualizar WordPress y mantener el código.
Mantener actualizado todo SIEMRPE
Como buenos profesionales, no debemos dejar ningún gap en nuestros desarrollos, mantener actualizado WordPress es una necesidad. Tanto por temas de seguridad, como por temas de coherencia, si mantenemos un puñado de WordPress es un poco locura tener cada uno en una versión, cada uno con una instalación diferente, con un entorno diferente. Toda esa variabilidad aumenta los quebraderos de cabeza 😉
Conclusiones
Nuestra idea no es dejar de utilizar WordPress, la idea es intentar dejar de ser cowboys del código y aplicar buenas prácticas de desarrollador software a WordPress. Esto es solo el principio, todavía no hemos escrito una linea de código. Estamos empezando por el entorno de desarrollo, espero que te haya gustado y que en los comentarios aportes tu punto de vista, como seguir mejorando WordPress o lo que quieras 😉