Administrar WordPress desde la línea de comando

wordpress

Estas cansado(a) de administrar tus sitios desde el navegador, te sientes más cómodo(a) usando la línea de comandos entonces WP-CLI es para ti.

WP-CLI es un conjunto de herramientas que te permiten administrar tus sitios WordPress sin necesidad de usar el navegador. Con WP-CLI puedes:

+ Instalar / Actualizar WordPress.
+ Instalar / Actualizar/Activar/Desactivar complementos.
+ Instalar / Actualizar / Activar / Desactivar temas.
+ Administrar usuarios.
+ Ejecutar operaciones sencillas de BD.
+ Administrar comentarios.
+ Administrar instalaciones de WordPress multisitios.
+ Administar opciones de WordPress y más

Requerimientos

+ Ambiente tipo UNIX (GNU/Linux, *BDS, Cygwin)
+ PHP 5.3.2 o superior
+ WordPress 3.5.2 o superior
+ MySQL o MariaDB
+ Apache, NGINX o un servidor Web compatible con PHP

Instalar WP-CLI

Puede instalar WP-CLI usando curl o wget, en este caso usaremos curl.

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

Comprobamos que funcione

$ php wp-cli.phar --info

Debe mostra algo así:

PHP binary:	/usr/bin/php5
PHP version:	5.6.13-0+deb8u1
php.ini used:	/etc/php5/cli/php.ini
WP-CLI root dir:	phar://wp-cli.phar
WP-CLI global config:	
WP-CLI project config:	
WP-CLI version:	0.20.2

Para hacer más fácil su uso le asignamos permisos de ejecución y lo movemos a /usr/local/bin como wp

$ chmod a+x wp-cli.phar && sudo mv -v wp-cli.phar /usr/local/bin/wp

Ver los comando disponibles

$ wp --help
NAME

  wp

DESCRIPTION

  Manage WordPress through the command-line.

SYNOPSIS

  wp 

SUBCOMMANDS

  cache               Manage the object cache.
  cap                 Manage user capabilities.
  cli                 Get information about WP-CLI itself.
  comment             Manage comments.
  core                Download, install, update and otherwise manage WordPress proper.
...

Ver la documentación de un comando

Por ejemplo para ver la documentación del comando core

$ wp core --help
NAME

  wp core

DESCRIPTION

  Download, install, update and otherwise manage WordPress proper.

SYNOPSIS

  wp core 

SUBCOMMANDS

  check-update           Check for update via Version Check API. Returns latest version if there's an update, or empty if no update available.
  config                 Generate a wp-config.php file.
  download               Download core WordPress files.
...

Descargar WordPress

El siguiente comando presupone que:

– El DIR /var/www/wplab existe
– El usuario bajo el cual corre su servidor web es www-data
– Su servidor web tiene permisos de escritura en /var/www/wplab
– El idioma seleccionado es Español.

$  sudo -u www-data wp core download --path=/var/www/wplab --locale=es_ES

Creamos el fichero de configuración de WordPress

$  sudo -u www-data cp -v /var/www/wplab/wp-config-sample.php /var/www/wplab/wp-config.php

Establecemos los valores deseados

Podemos editar el fichero de configuración ejecutando el siguiente comando

$ sudo -u www-data vim /var/www/wplab/wp-config.php

Busque los siguientes parámetros y establezca los valores deseados

/** El nombre de tu base de datos de WordPress */
define('DB_NAME', 'nombredetubasededatos');

/** Tu nombre de usuario de MySQL */
define('DB_USER', 'nombredeusuario');

/** Tu contraseña de MySQL */
define('DB_PASSWORD', 'contraseña');

/** Host de MySQL (es muy probable que no necesites cambiarlo) */
define('DB_HOST', 'localhost');

/**
 * Prefijo de la base de datos de WordPress.
 *
 * Cambia el prefijo si deseas instalar multiples blogs en una sola base de datos.
 * Emplea solo números, letras y guión bajo.
 */
$table_prefix  = 'wp_';

Una vez establecidos los valores anteriores procedemos a la

Instalación de WordPress

Antes de proceder con la instalación debes tener un servidor web instalado y configurado, haber creado la BD especificada en el parámetro DB_NAME y el usuario DB_USER debe tener permisos para crear tablas en dicha BD. Para más información consulte los artículos: Instalar y configurar Apache HTTP server, Administrar servidor MySQL – Básico y MySQL Administración de usuarios. Luego ejecutamos el siguiente comando:

$ sudo sudo -u www-data wp core install --path=/var/www/wplab/ --url=wplab.local --title='WP Lab Test' --admin_user=test --admin_password=test123 --admin_email=test@email.com

Ajuste los valores de lo parámetros según sus necesidades.

Administración de complementos

Listar

$ sudo -u www-data wp plugin list --path=/var/www/wplab/
+-----------------+----------+--------+---------+
| name            | status   | update | version |
+-----------------+----------+--------+---------+
| akismet         | inactive | none   | 3.1.5   |
| hello           | inactive | none   | 1.6     |
| autodescription | inactive | none   | 2.3.3   |
+-----------------+----------+--------+---------+

Buscar

Por ejemplo si queremos buscar todos los complementos que contengan la palabra seo

$ sudo -u www-data wp plugin search seo --path=/var/www/wplab/
Success: Showing 10 of 1722 plugins.
+-------------------------------+-------------------------------+--------+
| name                          | slug                          | rating |
+-------------------------------+-------------------------------+--------+
| SEO                           | seo-wizard                    | 72     |
| SEO Ultimate                  | seo-ultimate                  | 78     |
| WordPress SEO Comments Plugin | blog-comments-seo             | 86     |
| Yoast SEO                     | wordpress-seo                 | 90     |
| SEO by SQUIRRLY™        | squirrly-seo                  | 86     |
| SEO Post Content Links        | content-links                 | 100    |
| SEO Plugin LiveOptim          | liveoptim                     | 94     |
| WP Meta SEO                   | wp-meta-seo                   | 100    |
| Stallion WordPress SEO Plugin | stallion-wordpress-seo-plugin | 82     |
| Lazy SEO                      | lazy-seo                      | 72     |
+-------------------------------+-------------------------------+--------+

El comando anterior solo nos muestra 10 complementos si quisiéramos mostrar 100 en lugar de 10 lo haríamos de la siguiente manera.

$ sudo -u www-data wp plugin search seo --per-page=100 --path=/var/www/wplab/
Success: Showing 100 of 1722 plugins.
+---------------------------------+--------------------------------+--------+
| name                            | slug                           | rating |
+---------------------------------+--------------------------------+--------+
| SEO                             | seo-wizard                     | 72     |
| SEO Ultimate                    | seo-ultimate                   | 78     |
| WordPress SEO Comments Plugin   | blog-comments-seo              | 86     |
| Yoast SEO                       | wordpress-seo                  | 90     |
| SEO by SQUIRRLY™          | squirrly-seo                   | 86     |
| SEO Post Content Links          | content-links                  | 100    |
| SEO Plugin LiveOptim            | liveoptim                      | 94     |
| WP Meta SEO                     | wp-meta-seo                    | 100    |
| Stallion WordPress SEO Plugin   | stallion-wordpress-seo-plugin  | 82     |
| Lazy SEO                        | lazy-seo                       | 72     |
| Bubble SEO                      | bubble-seo                     | 84     |
...

WP-CLI no permite ordenar el resultado por rating así que aquí les dejo un truquillo que les permite ordernar el resultado además de descartar las líneas que no conforman un CSV válido. Antes de ejecutar los siguientes comandos debes haber instalado la herramienta cvstool. La secuencia sigue así:

1- Primero se busca los complementos y el resultado se le pasa a la herramienta AWK.
2- AWK comprueba si se trata de la primera o segunda línea (encabezados) imprime el resultado y pasa a la próxima línea.
3- Si la línea a analizar es la 3era o superior entonces AWK comprueba que los campos 2 (slug) y 3 (rating) no estén vaciós.
4- Luego AWK chequea que el campo 1 (name) termine con comilla doble («) si el mismo empieza con comilla doble.
5- Si no se cumple 3 y 4 entonces se pasa a la próxima línea.
6- AWK pasa al comando sort las líneas restantes.
7- Sort ordena las líneas por el valor del campo 3 (rating).
8- El resultado se pasa al comando csvtool para que lo imprima en formato entendible.

$ sudo -u www-data wp plugin search seo --path=/var/www/wplab/ --per-page=100 --format=csv | awk -F, 'NR

Otra solución sería usar el set de herramientas csvkit y simplificaríamos el comando anterior a

$ sudo -u www-data wp plugin search seo --path=/var/www/wplab/ --per-page=100 --format=csv --quiet|csvsort -r -c rating|csvlook

|-------------------------------------------------------------+------------------------------------------+---------|
|  name                                                       | slug                                     | rating  |
|-------------------------------------------------------------+------------------------------------------+---------|
|  Link to us - SEO Widget                                    | link-to-us                               | 100     |
|  The SEO Framework                                          | autodescription                          | 100     |
|  SEO Post Content Links                                     | content-links                            | 100     |
|  SO Hide SEO Bloat                                          | so-clean-up-wp-seo                       | 100     |
|  Greg's High Performance SEO                           | gregs-high-performance-seo               | 100     |
|  RankScanner: SEO Audit                                     | rankscanner-seo-audit                    | 100     |
|  Sewn In Simple SEO                                         | sewn-in-simple-seo                       | 100     |
|  Auto Clean URL for SEO                                     | auto-clean-url-seo                       | 100     |
|  SEO Enforcer for Yoast SEO                                 | seo-enforcer                             | 100     |
|  Expand SEO                                                 | best-seo                                 | 100     |
...

Instalar

Ahora que tenemos la lista de complementos seleccionamos uno y lo instalamos por ejemplo: The SEO Framework.

$ sudo -u www-data wp plugin install autodescription --path=/var/www/wplab/

Nótese que autodescription es el slug del complemento

Actualizar

$ sudo -u www-data wp plugin update autodescription --path=/var/www/wplab/

Puede actualizar todos los complementos pasando la opción –all en lugar del slug.

Activar

$ sudo -u www-data wp plugin activate autodescription --path=/var/www/wplab/

Desactivar

$ sudo -u www-data wp plugin deactivate autodescription --path=/var/www/wplab/

Eliminar

$ sudo -u www-data wp plugin delete autodescription --path=/var/www/wplab/

Nota: La administración de temas es similar a la administración de complementos.

Administración de usuarios

Listar

$ sudo -u www-data wp user list --path=/var/www/wplab/
+----+------------+--------------+----------------+---------------------+---------------+
| ID | user_login | display_name | user_email     | user_registered     | roles         |
+----+------------+--------------+----------------+---------------------+---------------+
| 1  | test       | test         | test@email.com | 2015-10-27 04:03:51 | administrator |
+----+------------+--------------+----------------+---------------------+---------------+

Crear

$ wp user create librebyte info@lb.com --role=author --path=/var/www/wplab/
Success: Created user 2.
Password: b3JCP0W7upQ1

Obtener información de un usuario

$ wp user get librebyte --path=/var/www/wplab/
+-----------------+---------------------+
| Field           | Value               |
+-----------------+---------------------+
| ID              | 2                   |
| user_login      | librebyte           |
| user_email      | info@lb.com         |
| user_registered | 2015-10-30 22:06:47 |
| display_name    | librebyte           |
| roles           | author              |
+-----------------+---------------------+

Cambiar contraseña de un usuario

$ wp user update --user_pass=nueva-contraseña sedlav --path=/var/www/wplab/ 
Success: Updated user 1.

Eliminar

 wp user delete librebyte --path=/var/www/wplab/              
--reassign parameter not passed. All associated posts will be deleted. Proceed? [y/n]
Success: Removed user 2 from http://wplab.local

Administrar BD

Todos los comandos relacionados con la administración de BD usan los valores especificados en el fichero de configuración.

Abrir consola de MySQL

$ wp db cli --path=/var/www/wplab/
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 190
Server version: 5.5.46-0+deb8u1 (Debian)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql> 

Listar tablas

$  wp db tables --path=/var/www/wplab/
wp_users
wp_usermeta
wp_posts
...

Ejecutar consulta

$  wp db query 'desc wp_posts' --path=/var/www/wplab/
+-----------------------+---------------------+------+-----+---------------------+----------------+
| Field                 | Type                | Null | Key | Default             | Extra          |
+-----------------------+---------------------+------+-----+---------------------+----------------+
| ID                    | bigint(20) unsigned | NO   | PRI | NULL                | auto_increment |
| post_author           | bigint(20) unsigned | NO   | MUL | 0                   |                |
| post_date             | datetime            | NO   |     | 0000-00-00 00:00:00 |                |
...

Hacer copia de seguridad

$ wp db export wplab.sql --path=/var/www/wplab/
Success: Exported to wplab.sql

Otros subcomandos:

+ create: Crea la BD
+ drop: Elimina la BD
+ import: Importa desde un fichero sql
+ optimize: Optimiza la BD
+ repair: Repara la BD
+ reset: Elimina las tablas de la BD

Lecturas recomendads

Proyecto WP-CLI

Deja un comentario

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.