Cómo fue la charla «Automatiza tu instalación de WordPress»

Los números

  • Apuntados a la charla: 47 personas.
  • Asistentes: 23 personas.
  • Se realizó el pasado 15 de febrero de 2020 en el espacio que nos cede ULab, el centro de coworking de Alicante.

IMPORTANTE: Os recordamos que en la herramienta Slack tenemos un canal registrado para organizarnos y poder compartir la gestión de la meetup, concretamente el canal que usamos es #wpalicante de Slack WordPress España. Si quieres echar una mano, aportar ideas y formar parte más activa de esta comunidad sigue las instrucciones que aparecen en la siguiente página -> http://wp-es.es/slack/

Automatiza tu instalación de WordPress: La charla

Como ya vamos entrando en calor en este 2020, la siguiente propuesta que os hacemos desde WPAlicante es que seais capaces de agilizar las instalaciones que tengáis que hacer de WordPress. Para ello, este mes nos acompaña en el espacio de ULab el gran Borja López, ex organizador de la meetup de WordPress Valencia y organizador de la primera WordCamp Valencia, que nos habla de automatizaciones de las instalaciones WordPress, con PHP, WP-CLI y demás.

Por supuesto, no puede faltar la clásica ronda de preguntas al final de la charla, propia de todas las meetups, así como el tradicional networking acompañado de refrescos en alguno de los pubs de los alrededores, que el clima no acompaña para estar a la intemperie, siempre gracias a nuestros patrocinadores: Weglot, el plugin de WordPress para traducir tu web al idioma que desees. Lo podéis probar sin ningún compromiso ya que tiene de forma gratuita el uso para traducir hasta 2000 palabras a un idioma, además ocupa muy poco en el servidor. También tenemos como patrocinador a WP Hercules, que nos ofrece tanto servicio de hosting como de mantenimiento de WordPress. Y por último, en esta ocasión contamos también con la profesionalidad de Marco Producciones, que se ha ofrecido a grabar y editar la charla para que no os perdáis detalle de todo lo que ha ocurrido.

Os dejamos el enlace a la presentación compartida durante la charla y os remarcamos a continuación algunos puntos que nos han resultado interesantes. aunque os incluimos al final de esta entrada el vídeo completo de la presentación.

Fundamentos: En qué máquina tenemos alojado nuestro WordPress

La instalación de WordPress implica siempre los mismos pasos y las mismas 3 o 4 horas para configurar el sitio a nuestro gusto instalando el tema elegido y los plugins básicos que necesitamos. Esos mismos pasos podríamos programarlos para que la máquina los hiciera sola y para ello el sistema a elegir dependerá tanto de nuestro nivel técnico como del nivel técnico de nuestros alojamientos.

No es lo mismo utilizar alojamientos económicos donde es prácticamente imposible acceder por SSH, que tener nuestra web en servidores propios o en máquina en Amazon donde ahí sí será bastante común poder acceder por SSH.

Hay tres formas de realizar una instalación de WordPress personalizada:

  • Template site: Una persona que en local se instala su WordPress con todo lo que necesita y luego cuando llega un proyecto, copia lo que tiene en local modificando un par de cosas sin mayor complicación. Es la forma más sencilla que existe y es asequible a cualquier instalador, sepa o no sepa programar.
  • WP_install_defaults(): Es la que lleva por defecto WordPress. Esta ya requiere cierto nivel de PHP para poder realizarla. Es más compleja que la siguiente que veremos pero más asequible a cualquier persona porque no necesita poder acceder al servidor mediante SSH.
  • WP-CLI: para utilizar comandos de consola directamente. Este método es mucho más rápido y eficaz como ahora veremos, pero requiere tener permisos para poder acceder a la consola del servidor.

Automatización de instalación WordPress mediante PHP:

Se utiliza de base el método WP_install_defaults(), que es el método por defecto que utilizar WordPress para realizar una instalación. Ahí se puede ver cómo instala la entrada por defecto, el comentario por defecto, el tema por defecto… Se encuentra en:

wp-admin/includes/upgrade.php

Y nosotros vamos a crear nuestra versión de WP_install_defaults() con los mismos parámetros (copiamos la cabecera tal cual), rellenamos la función con lo que queremos que WordPress realmente instale y la guardamos en:

wp-content/install.php

Esto implica que a partir de ahora, para realizar nuestra instalación personalizada siempre hemos de descargar WordPress, guardar en wp-content nuestro archivo install.php y después se lanza la instalación. Aparentemente no va a ocurrir nada fuera de lo normal, nada distinto a una instalación habitual. Lo que ocurre es que tras la finalización del proceso, al entrar en WordPress, veremos nuestra configuración, nuestro tema deseado, los plugins que queríamos tener instalados… En la presentación tenéis un enlace a un ejemplo. También podéis encontrar para cada tipo de elemento, los comandos/funciones que se utilizan y ejemplos de uso particulares. Todas las funciones están dentro del codex de WordPress, algunas pueden ser un poco más difíciles de encontrar, pero todo está ahí y la documentación suele ser bastante buena.

Configurar opciones

La tabla más grande y más pesada de WordPress es la de opciones. Hubo un momento donde cada plugin y tema tenía su propia tabla pero en un momento dado se decidió que todo estuviera en la misma. La principal ventaja es que tenemos todas las opciones juntas, por lo que sólo hay que tocar en un sitio. La desventaja es que hay muchas configuraciones que WordPress guarda como un serializado en JSON , que además no es la serialización que se suele utilizar sino que WordPress añade campos que guardan el conteo de caracteres de los valores de tal forma que si cambias a mano un valor y no tiene el mismo conteo la configuración falla.

Las tareas más habituales respecto de las opciones son su actualización y recuperación del valor que contiene. Es muy común querer modificar en la instalación el idioma, la categoría por defecto, el título del blog, la zona horaria o los permalinks para las entradas que creemos. Las opciones se encuentran en:

wp-admin/options.php

Otras tareas dentro del fichero de instalación

  • Instalar plugins: Hay que tener en cuenta que con la función que existe actualmente para PHP sólo se instala el plugin, es decir, no se activa ni configura. Además, sólo se pueden instalar plugins del repositorio de WordPress. Resulta muy complejo intentar instalar un plugin descargado de otro sitio.
  • Instalar themes (temas): Lo ideal sería tener una función tan sencilla como la de instalar plugins pero lamentablemente no es así, hay que realizar unos cuantos pasos que se detallan en la presentación.
  • Configurar plugins y themes: Se configuran mediante opciones.
  • Crear usuario: Cuando lo creas se recoge el ID que permite ir aportando las características que queramos que tenga, como si tiene que ser superusuario, si debe ver el panel de bienvenida en WordPress, si hay que generarle una constraseña, si hay que asignarle un rol… Lo que se puede hacer es crear un rol especial de usuario para nuestro cliente, con el que pueda ir viendo los progresos pero no pueda tocar nada y tener nosotros el superusuario. Cuando terminemos la web y se la demos al cliente ya podamos modificarle su rol para que a partir de ese momento pueda ser él superusuario.
  • Crear categoría: Aparecen las funciones underscore de WordPress. El tema de las traducciones es vital en WordPress porque si no tenemos archivos de traducción podrán aparecer textos en un idioma que no es el que toca. Tanto es así que WordPress no sólo tiene las WordCamps sino también eventos especiales uno o dos veces al año (WordPress Translation Day) para revisar los archivos de traducciones.
  • Crear una entrada (post): Para ello tenemos que insertar una entrada en la tabla de Posts con sus datos principales, lo que nos devolverá un ID, que es el que utilizaremos para otras tareas como incluirlo en una categoría determinada. Esto no es tarea sencilla porque las categorías en realidad son términos que se guardan en las tablas de relaciones con lo que tendremos que incluir el ID de categoría que tendremos que haber recuperado… Es decir, el proceso de hacer estas tareas con PHP nos sirve para cualquier alojamiento a costa de que tenemos que estar tocando muchas más cosas que a través de la consola. Dentro de los datos que forman parte del post se puede incluir el contenido del propio post, por lo que se puede incluir en texto plano incluso los bloques de Gutenberg que queremos que aparezcan.
  • Crear una página: Igual que crear una entrada pero con la única salvedad que le añadimos el parámetro que indica que se trata de una página y no de una entrada. Recordad que todo el contenido se está guardando realmente en la misma tabla de WordPress y sólo cambia el tipo de contenido.
  • Configurar la política de privacidad: Es algo nuevo que sacó WordPress para adaptarse a la normativa europea de la RGPD y lo único que hace es darte una plantilla (muy cutre) pero te permite poder usarla por defecto si tú no le incluyes una específica. Al ser PHP se puede utilizar el ID del primer usuario que se está creando para obtener los datos del cliente con los que rellenar la política de privacidad.
  • Crear un comentario: Se pueden incluir comentarios por defecto en la propia instalación.

Esto es básicamente todo lo que se puede hacer con PHP. Hay algunas otras cosas que también se pueden hacer pero por su complejidad no es aconsejable abordarlos, como la creación de widgets. Lo desaconsejamos porque los widgets se guardan en arrays serializados en la tabla Options. Eso supone que cada vez que hay que configurar un widget hay que recuperar el serializado que toca, pasarlo a array como toca, buscar dentro del array y configurarlo, y la documentación con todos los parámetros necesarios para configurar un widget a través de PHP es prácticamente inexistente.


Automatización de instalación WordPress mediante WP-CLI

Inicialmente nació como un proyecto que no era de WordPress sino de una persona que conocía bien el tema de consola de comandos y montó todo el WP-CLI inicial. A Automatic le gustó tanto que lo incluyó en el core de WordPress. El principal responsable de la comunidad de WP-CLI es Alain Schlesser, un alemán que suele participar activamente en las WordCamps europeas. También se puede preguntar cualquier duda en el grupo. La documentación de WP-CLI es muy detallada aunque sí es cierto que requiere un poco de conocimiento técnico, además de tener permisos para acceder a la consola de nuestro alojamiento.

Aparte de simplicar enormemente todas las tareas que ya hemos visto para PHP, en WP-CLI tenemos otra serie de opciones adicionales que en PHP serían impensables, como:

  • Cambiar las SALTS: es algo que no hemos visto en PHP pq sería muy complejo y aquí es un sencillo comando. Además, se puede hacer que la generación de contraseñas se complique tanto como queramos, con otro sencillo comando de consola.
  • Instalar y activar plugins de cualquier ruta. Es decir, no sólo podemos instalar cualquier tipo de plugin, esté o no en el repositorio de WordPress sino que además también podemos activarlo. Y por si esto fuera poco, incluso se puede hacer una lista de plugins en un zip e indicar ese fichero en la consola.
  • Instalar un tema: También se puede crear un tema hijo y activarlo.
  • Modificar datos serializables: Hay un comando específico para modificar una variable dentro de un serializable dentro de una configuración. En PHP habría que hacerlo a mano y en WP-CLI es tan sencillo como indicar la clave del serializable y pedir que se modifique el valor concreto.
  • Crear usuarios: No sólo tiene varios comandos para crear usuarios con más o menos información según nos interese sino que además se pueden crear el número que queramos de usuarios aleatorios, para realizar, por ejemplo, pruebas de carga o estrés.
  • Crear menús: En PHP es bastante complejo. Aquí se resuelve en un comando para la creación y otro para añadir las páginas que queramos a cada menú.
  • Crear Custom Post Types (CPTs): Lo que se crea es el esqueleto al que luego hay que darle forma.


Preguntas y temas de networking final

PREGUNTA: ¿Puedes crear un archivo con todas esas líneas de comando de WP-CLI para hacerlo automático (en vez de tener que ir escribiendo cada comando en la propia consola)?

RESPUESTA: WP-CLI son comandos de consola. Tú puedes crear un archivo de consola con todo lo que quieras, complicarlo todo lo que seas capaz y pasarlo a la consola para que lo ejecute. De hecho, WP-CLI no sólo se puede utilizar para la instalación. Otro ejemplo de uso puede ser tenerlo en un CRON para que cada cierto tiempo sincronice los datos en local con lo que hay en la Base de Datos de Producción. Así mi copia en local donde voy trasteando y probando mejoras siempre la tengo actualizada con lo último que haya en Producción.

PREGUNTA: Para usar WP-CLI, ¿basta con acceder por SSH a la consola de tu WordPress y ya puedes hacer todo lo que hemos estado viendo en la charla?

RESPUESTA: Hay dos formas de hacerlo:

1- Hago conexión SSH al servidor, dentro tengo WP-CLI, que en la documentación también aparecen las opciones de instalación por si no estuviera instalado aunque lo normal es que el alojamiento sí disponga de él, y ejecuto los comandos WP-CLI.

2.- El mismo comando le pones los datos de SSH y se ejecuta a través de SSH. Este «subcomando» es común a todos los comandos de WP-CLI y también están en la documentación.

Glosario

  • SSH: Son las siglas de Secure SHell y se trata de un protocolo que facilita las comunicaciones seguras entre dos sistemas usando una arquitectura cliente/servidor y que permite a los usuarios conectarse a un host remotamente, mediante un proceso de autenticación (usuario y contraseña) que asegure que tienes permisos para acceder al sistema remoto.
  • JSON: Es un formato liviano para el intercambio de datos. Viene de las siglas JavaScript Object Notation. Es un formato de texto independiente del lenguaje de programación que es muy fácil de leer, generar e interpretar por un humano. Puede utilizar tanto listas ordenadas de valores como colecciones de pares «nombre»,»valor». Cuando se serializa un dato en JSON lo que se está haciendo es convertir un objeto .NET personalizado, por ejemplo, en una cadena JSON. Al proceso contrario se le denomina deserialización.
  • Funciones underscore de WordPress: Son funciones que se utilizan para la localización y traducción. Existen tres tipos:
    • __(): Para las traducciones normales.
    • _x(): Para traducciones en un determinado contexto.
    • _e(): Para traducciones que hay que mostrar por pantalla (la e es de «echo», que es como se pinta por pantalla en PHP).
  • SALTS: Son una forma de mantener un sitio de WordPress seguro. Para ello, utiliza una herramienta criptográfica que ayuda a proteger el inicio de sesión de cada usuario codificando la entrada de usuario y contraseña con su clave de seguridad correspondiente.

Automatiza tu instalación de WordPress: El vídeo

Algunas fotos


Comentarios

Deja una respuesta

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