Productividad en WordPress con wp-cli

Si utilizas WordPress seguro que empezaste con el típico tutorial de instalación en 5 minutos. Entonces podías presumir de productividad. Instalar todo un gestor de contenido en tan sólo 5 minutos, pero es una verdad a medias. El problema viene después; hay que configurarlo correctamente, instalar themes, plugins y dejarlo todo ok. Esto requiere más tiempo y es aburrido cuando has instalado muchos WordPress. Para esta tarea tan poco agredecida utilizo wp-cli.

Productividad en WordPress con wp-cli

Con esta herramienta me olvido de entrar en el backend de WordPress y lo manejo todo a través de la linea de comando. wp-cli tiene muchos comandos para la gestión de WordPress, desde la instalación, gestión de themes y plugins hasta la migración de sitios web.

En esta entrada te explico cómo instalarlo y te enseño un par ejemplos de uso.

Instalación de wp-cli

La instalación de wp-cli.phar es muy sencilla. Tan solo sigue estos pasos:

Paso 1. Bajar wp-cli.phar:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

Paso 2. Probar que funciona bien:

php wp-cli.phar --info

Si algo va mal en este paso comprueba los requisitos mínimos para instalar wp-cli.

Paso 3. Dar permisos de ejecución, cambiar el nombre a wp y moverlo al sitio definitivo:

chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

La ruta destino puede ser diferente en tu máquina. Si lo instalas en un hosting compartido probablemente debas dejarlo en tu directorio home y crear un alias en un fichero .bash_profile. Puedes ver otros tipos de instalación en la página oficial.

Una vez instalado te presento dos tareas donde uso wp-cli de forma rutinaria:

  • Instalación de WordPress
  • Migración de hosting y dominio

Instalar de WordPress con wp-cli

La instalación de WordPress se realiza en tres pasos:

Paso 1. Bajar el último paquete de WordPress:

wp core download

Paso 2. Configuración del archivo wp-config.php con la base de datos, el usuario y la contraseña. También se puede configurar el idioma y cambiar el prefijo de las tablas.

wp core config --dbname=db_name --dbuser=db_usr --dbpass=db_pass --dbprefix=jks --locale=es_ES

Paso 3. Crear la base de datos y los archivos de WordPress con los datos necesarios: url, título, administrador, contraseña y dirección de correo.

wp core install --url=domain.com --title='New Site' --admin_user='adm_usr' --admin_password='adm_pass' --admin_email='example@gmail.com'

Por supuesto hay más parámetros para estos comandos. Los puedes ver en la página oficial.

Configuración de WordPress

Hasta aquí nada nuevo, con los paneles de los hosting actuales puedes instalar WordPress con muy pocos pasos, pero wp-cli también te permite configurar parámetros, instalar plugins, themes y hacer practicamente de todo.

Una configuración típica de WordPress es utilizar los nombres de las entradas en los permalinks. Con wp-cli se hace así:

wp rewrite structure '/%postname%/'

wp rewrite flush

Otra tarea obligada es limpiar WordPress de cosas innecesarias como el post “Hello World” o el plugin “Hello”. Algo muy sencillo con estos comandos:

wp plugin delete hello

wp post delete 1

Instalación de plugins habituales

Con wp-cli puedes instalar todos los plugins a la vez y además dejarlos activados:

wp plugin install google-sitemap-generator wp-super-cache --activate

Todo junto

Y ahora viene lo mejor, puedes crear un script (por ejemplo: install-wp.sh) con todo lo visto hasta ahora. Tan sólo debes hacer una pequeña modificación. Tienes que añadirle unos parámetros al inicio del script para facilitar el cambio de los datos propios de cada sitio web, como son la base de datos, usuario, url, administrador, etc… El script queda así:

#!/bin/bash

# Data base vars
db_name='db_name'
db_user='db_usr'
db_pass='db_pass'
db_prefix='jks_'

# WordPress vars
wp_locale='es_ES'
wp_url='example.com'
wp_title='Mi testing site'
wp_admin_name='wp_admin'
wp_admin_password='wp_pass'
wp_admin_email='wp_admin@example.com'

# Download latest WordPress.
echo 'Downloading latest WordPress'
wp core download


# Create wp-config.php.
echo 'Creating wp-config.php file'
wp core config \
  --dbname=${db_name} \
  --dbuser=${db_user} \
  --dbpass=${db_pass} \
  --dbprefix=${db_prefix} \
  --locale=${wp_locale}

# Install WordPress
echo "Installing WordPress"
wp core install \
  --url=${wp_url} \
  --title="${wp_title}" \
  --admin_name=${wp_admin_name} \
  --admin_password=${wp_admin_password} \
  --admin_email=${wp_admin_email}

# Permalink config
echo "Permalink config"
wp rewrite structure '/%postname%/'
wp rewrite flush

# Cleaning WordPress
echo "Cleaning WordPress"
wp plugin delete hello
wp post delete 1

# Install plugins
echo "Installing WordPress"
wp plugin install google-sitemap-generator wp-super-cache contact-form-7 cookie-control --activate

Puedes bajarte el script de github.

Con este script los pasos a seguir para crear un WordPress quedan así:

  • Instalar wp-cli
  • Crear base de datos en mysql y un usuario con permisos
  • Modificar el fichero install-wp.sh con los datos del sitio web y ejecutarlo.

Y ya está. Así te olvidas de entrar en el backend y perder el tiempo.

Migrar hosting y dominio

Otra tarea habitual es la migración de hosting y/o de domino. Con wp-cli es realmente sencillo. Te pongo un escenario de ejemplo. Tienes que migrar una web con el domino pepe.com al dominio juanito.org desde un hosting origen a un hosting destino. Con estos pasos es muy fácil:

1. Preparar hosting destino

En el hosting destino debes hacer un par de cosas:

  • Crear el dominio juanito.org
  • Crear una base de datos y un usuario con permisos

Para estas tareas puedes usar el panel de control del hosting. Apunta el usuario, password y base de datos para más adelante.

2. Copiar datos del hosting origen

Desde el terminal accedes al hosting origen y dentro del directorio de WordPress ejecutas el comando que exporta la base de datos:

wp db export

Este comando crea un fichero cuyo nombre será el dominio con la extensión sql. Algo así: pepe_com.sql.

Ahora copias todo el contenido del directorio de WordPress al hosting destino. Puedes hacerlo con ftp o desde el gestor de ficheros del hosting, pero a mí me gusta más usar scp.

scp -r . user@juanito.org:path/to/files

3. Importar base de datos

Utilizando el terminal entras en el hosting destino y te situas en el directorio WordPress definitivo. Con los datos obtenidos en el primer paso cambias el usuario, base de datros y password del fichero wp-config.php

// ** MySQL settings ** //
/** The name of the database for WordPress */
define('DB_NAME', 'db_name');

/** MySQL database username */
define('DB_USER', 'db_user');

/** MySQL database password */
define('DB_PASSWORD', 'db_pass');

Ahora con wp-cli importas la base de datos con el fichero pepe_com.sql:

wp db import pepe_com.sql

4. Ultimo paso. Cambiar el dominio

Finalmente debes modificar el dominio. La base de datos importada contiene el domino antiguo, para cambiarlo se usa el comando replace. Este comando reemplaza una cadena de texto por otra, pero tiene en cuenta el texto serializado, así lo hace de la forma correcta.

Primero ejecutas el comando replace con el parámetro --dry-run para hacer una prueba. Esta prueba saca por pantalla un listado con las tablas donde se van a realizar los "replace" pero sin tocar la base de datos:

wp search-replace pepe.com juanito.org --dry-run

Después de comprobar que todo van bien puedes ejecutar el comando sin --dry-run para realizar los cambios definitivos:

wp search-replace pepe.com juanito.org

Y ya está!. Sencillo y rápido, no se puede pedir más. No olvides borrar el fichero pepe_com.sql

Conclusión

wp-cli es una navaja suiza que te permite ahorrar mucho tiempo en tareas poco productivas y concentrarte en las cosas importantes. Si quieres, puedes comentar para que tareas usas wp-cli.

Comentarios

  1. Hola,

    Soy nuevo en WordPress y he seguido con atención otros tutoriales tuyos. En primer lugar, quiero felicitarte por tu trabajo desinteresado. Por el momento únicamente he leído los más básicos manuales: templates, childtheme, etc. Y la verdad es que como intento cambiar de joomla, ya que veía demasiados fallos en plantillas, y demás pequeños errores que te complican mucho la vida, veo que el sistema de WP es más dependiente de variaciones en los propios códigos. En cierta medida es más complejo, pero te permite más interacción con el core del sistema.

    A lo que iba, le veo muchisima utilidad al tuto que acabas de plantear con wp-cli pero no acabo de entender de qué modo ejecutas esas líneas de código y en qué archivos irían. Sé que tal vez soy demasiado novato y de ahí mi ignorancia en el tema, pero sería de gran ayuda que en cada sección de código nos indiques en qué archivo (por ejemplo: código en funtions.php, etc) irían y qué lugar deberían ocupar.

    También cabe la posibilidad de que esté hablando de obviedades y no merezca la pena indicar nada de lo anterior. En todo caso, te agradecería una ayudita.

    Saludos y reitero las gracias por tu ayuda!

    1. Hola,

      Quizás he dado por sentado muchas cosas. En el tutorial sólo hay que tocar un fichero: wp-config.php donde las variables que debes modificar ya existen.

      Luego hay un fichero bash script install-wp.sh que aglutina todas las ordenes usadas en el tutorial. Este fichero tiene también unas variables que debemos modificar para cada caso.

      Respecto a como ejecuto las ordenes, tan sólo debes conectarte con el servidor a través de terminal. Si tu ordenador es un Linux o Mac, abres un terminal y te conectas como indico en el tutorial. En Windows no soy experto pero puedes instalar un emulador de terminal como Cygwin y actuar como indico en el tutorial.

      Si tienes alguna pregunta concreta estaré encantado en ayudarte. Un saludo

  2. Hola Pedro,

    Gracias también por el tutorial, pero tampoco consigo conseguirlo ^^. Recibo un mysql: command not found. Puede que el error sea tan tonto de mi parte cómo que lo estoy haciendo desde el terminal en mi máquina y el hosting lo tengo con CDMON? Si es el caso, puedo hacerlo de alguna forma?

    Hago proyectos en wordpress constantemente pero siempre me lío con el mundo de los servidores y el terminal lo he usado muy pocas veces y a base de tutoriales. Vamos que me pierdo mucho, lo siento si mi duda es muy evidente.

    1. Hola Marc

      Quizás si me das más datos de como lo estás haciendo pueda ayudarte. Estás ejecutando el script de instalación que tengo colgado?. Estás ejecutando una orden concreta con wp-cli?

Responder a Mago Cancelar respuesta

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