Contenidos del Post
- Instalar WP-CLI
- Ejemplos: Instalar y Actualizar WordPress
- Comandos
- Lista de comandos
- Verificar instalación de WordPress
- Actualizar WP-CLI
- Gestionar comentarios
- Administrar el fichero wp-config.php
- Gestionar el core de WordPress
- Gestionar los cron de WordPress
- Gestionar las bases de datos
- Testear código PHP
- Cambiar idioma
- Gestionar medios
- Gestionar menus
- Administrar plugins
- Administrar las entradas
- Para listar los tipos de etiquetas:
- Reglas rewrite
- Gestionar roles
- Scaffold
- Reemplazar strings en la base de datos
- Listar barras laterales
- Administrar sitios
- Gestionar taxonomías
- Administrar Terms
- Administrar temas
- Gestionar usuarios
- Administrar widgets
- Lista de comandos
WP-CLI (Command-Line Interface) es una herramienta que permite administrar instalaciones de WordPress desde la línea de comandos.
Con la Interfaz por Línea de Comandos podemos gestionar las instalaciones de WordPress muchísimo más rápido de lo que lo haríamos accediendo al panel de control del administrador. Podemos instalar WordPress, descargar plugins, actualizar tanto el core de WordPress como los plugins o los temas, así como crear o borrar usuarios, entre muchas otras cosas.
A continuación vamos a dar comienzo a la guía en la que explicaremos cómo instalar la CLI, explicar los comandos disponibles, etc.
Instalar WP-CLI
Para empezar vamos a definir los requisitos necesarios para instalar WP-CLI.
Según la página oficial, se requiere como mínimo la versión 5.3.29 de PHP, así como una versión de WordPress posterior a la 3.7.
A pesar de que se puede instalar en entornos Windows, está limitado, por lo que para sacarle el máximo rendimiento debe estar en un entorno UNIX. También se require tener conexión con el servidor en el que se va a instalar, ya sea por estar gestionando el servidor físicamente, o por estar conectado mediante SSH.
Una vez definidos los requisitos, procederemos a explicar cómo instalar WP-CLI.
En primer lugar descargamos el fichero wp-cli.phar:
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
Seguidamente le damos permisos de ejecución al fichero:
chmod +x wp-cli.phar
Después movemos el fichero a "/usr/local/bin/wp" para poder ejecutarlos desde cualquier parte.
mv wp-cli.phar /usr/local/bin/wp
Tras ésto, ya hemos instalado WP-CLI.
Para comprobar que se ha instalado correctamente, ejecutar el comando:
wp --info
Os debería salir algo parecido a:
PHP binary: /usr/bin/php7.1
PHP version: 7.1.12-1+ubuntu16.04.1+deb.sury.org+1
php.ini used: /etc/php/7.1/cli/php.ini
WP-CLI root dir: phar://wp-cli.phar
WP-CLI vendor dir: phar://wp-cli.phar/vendor
WP_CLI phar path: /var/www/html
WP-CLI packages dir:
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 1.4.1
Ejemplos: Instalar y Actualizar WordPress
A continuación vamos a poner un ejemplo de cómo instalar WordPress desde cero, y otro ejemplo de cómo actualizar WordPress.
Instalar WordPress
En primer lugar vamos a descargar WordPress. Para ello podemos elegir la versión que queremos con la opción --version, y el idioma con --locale.
Lo habitual es instalar la última versión de WordPress, por lo que vamos a omitir el uso de --version, y como lo queremos en español, ponemos --locale=es_ES (si se omite la opción se descarga en inglés, en_US).
wp core download --locale=es_ES
Procederemos a continuación a generar el fichero wp-config.php.
Para ello tenemos que indicar el nombre de la base de datos (--dbname), el usuario (--dbuser), la contraseña (--dbpass) y el host en el que está la base de datos (--dbhost).
La base de datos no se genera automáticamente, por lo que debemos crearla ANTES de generar el fichero.
mysql -u root -proot -se "create database db_wordpress;"
mysql -u root -proot -se "grant all privileges on db_wordpress.* to 'db_user'@'localhost' identified by 'db_pass';"
mysql -u root -proot -se "flush privileges;"
Una vez hayamos creado la base de datos, generamos el fichero con el comando:
wp config create --dbname=db_wordpress --dbuser=db_user --dbpass=db_pass --dbhost=localhost
Tras generar el fichero, ya podemos realizar la instalación de WordPress. Una de las ventajas de instalar WordPress con WP-CLI, es que no es necesario configurar la instalación desde el navegador, sino que se puede configurar absolutamente todo desde la línea de comandos.
En la instalación de WordPress se debe indicar la url (--url), el título (--title), el nombre del usuario administrador del sitio (--admin_user), la contraseña del administrador (--admin_password) y el email (--admin_email).
Como vamos a realizar una instalación sencilla, no vamos a habilitar https. El comando para realizar la instalación es:
wp core install --url=http://ejemplo_wordpress.com --title="Ejemplo WordPress" --admin_user=admin --admin_password=admin123 --admin_email=ej_wp@gmail.com
Actualizar WordPress
Como ya comentamos en el artículo en el que explicamos cómo mejorar la seguridad de tu WordPress, siempre hay que tener la última versión de WordPress. Esto se debe a que al sacar una nueva actualización se hacen públicos los fallos de seguridad corregidos en la última versión, por lo que no actualizar WordPress es correr un gran riesgo del todo innecesario.
Para actualizar WordPress simplemente debemos introducir el comando:
wp core update
Si ya está actualizado saldrá un mensaje indicando que WordPress ya está actualizado, si no lo está se actualizará.
En lugar de actualizarlo, podemos comprobar si existe una actualización con el comando:
wp core check-update
Tras estos ejemplos, vamos comentar parte de los comandos disponibles para mostrar cómo funcionan.
Comandos
Antes de entrar en detalles en los distintos comandos que se pueden ejecutar, debes saber que puedes ver en cualquier momento las opciones de cada comando tecleando el comando que quieres ver seguido de --help.
Lista de comandos
- cache
- Manipula los elementos cacheables de WordPress.
- cap
- Añade, elimina, y lista las capacidades de un rol de usuario.
- checksum
- Comprueba la integridad de los archivos comparándolos con ficheros limpios.
- cli
- Comprueba la información actual de WP-CLI, comprueba actualizaciones o lista los alias definidos
- comment
- Crea, actualiza, borra y modera comentarios.
- config
- Gestiona el fichero wp-config.php.
- core
- Descarga, instala, actualiza y gestiona una instalación de WordPress.
- cron
- Gestiona los eventos y programaciones de los cron de WordPess.
- db
- Realiza operaciones básicas de las bases de datos utilizando las credenciales almacenadas en el fichero wp-config.php.
- eval
- Ejecuta código PHP
- eval-file
- Carga y ejecuta un fichero php.
- export
- Exporta el contenido de WordPress a un fichero WXR.
- help
- Consigue ayuda en WP-CLI o con un comando específico.
- import
- Importa contenido desde un fichero WXR.
- language
- Instala, desinstala, lista, actualiza y activa un idioma.
- media
- Importa archivos adjuntos, regenera miniaturas y lista el tamaño de las imágenes.
- menu
- Lista, crea, asigna y borra los menús del tema activo.
- network
- Administra los campos personalizados de la red (para multisitios)
- option
- Extrae y define las opciones del sitio, incluyendo los plugins y las configuraciones de WordPress.
- package
- Lanza comandos del administrador de paquetes de WP-CLI.
- plugin
- Gestiona los plugins del sitio, incluyendo instalaciones, activaciones y actualizaciones.
- post
- Administra las entradas, el contenido y los meta.
- post-type
- Extrae los detalles de los tipos de entradas del sitio.
- rewrite
- Lista o refresca las reglas rewrite del sitio, actualiza la estructura de enlaces permanentes.
- role
- Gestiona roles de usuario, incluyendo crear nuevos roles y resetear los roles por defecto.
- scaffold
- Genera código para los tipos de entrada, taxonomías, plugins, temas hijo, etc.
- search-replace
- Busca/Reemplaza cadenas en la base de datos.
- server
- Configura el servidor web para esta instalación de WordPress mediante PHP.
- shell
- Abre una consola interactiva de PHP para testear código PHP.
- sidebar
- Lista las barras laterales registradas.
- site
- Gestiona un multisitio.
- super-admin
- Lista, añade o elimina usuarios super administradores en una instalación multisitio.
- taxonomy
- Extrae información sobre taxonomías registradas.
- term
- Gestiona los términos de taxonomías y meta, y crea, elimina y lista comandos.
- theme
- Administra los temas de los sitios, incluyendo instalaciones, activaciones y actualizaciones.
- transient
- Manipula la Cache Transitoria de WordPress
- user
- Administra usuarios junto a sus roles y capacidades.
- widget
- Gestiona widgets, incluyendo añadir y mover dichos widgets entre las barras laterales.
Estos son los comandos que se pueden utilizar, aunque cada comando tiene muchos subcomandos, que a su vez tienen otros tantos subcomandos.
Ahora vamos a poner algunos ejemplos de las miles de opciones que nos proporciona esta poderosa herramienta.
Verificar instalación de WordPress
Podemos testear nuestra instalación de WordPress para comprobar si nos falta algún fichero, o si algún fichero ha sido alterado.
Para realizar la comprobación:
wp checksum core --version=4.9.1 --locale=es_ES
Actualizar WP-CLI
Podemos comprobar la versión que tenemos de la interfaz por línea de comandos, si hay actualizaciones disponibles, actualizarla, etc.
Comprobar la versión actual:
wp cli version
Comprobar si hay actualizaciones disponibles:
wp cli check-update
Actualizar (se necesita tener permisos de escritura en el fichero wp):
wp cli update
Gestionar comentarios
También podemos aprobar un comentario, contar los comentarios de una entrada o todos los que hay en el sitio, crear o borrar un comentario, listar los comentarios, etc. Cada comentario tiene asignado un identificador, que es el que utilizamos para indicar sobre qué comentarios queremos trabajar).
Crear un comentario:
wp comment create --comment_post_ID=6 --comment_content="Hola mundo" --comment_author="Kevin"
Actualizar un comentario:
wp comment update 13 --comment_author="asdf"
Borrar un comentario:
wp comment delete 13 --force
Listar todos los comentarios:
wp comment list
Una forma útil de utilizar este comando es para borrar los comentarios marcados como spam:
wp comment delete $(wp comment list --status=spam --format=ids)
Administrar el fichero wp-config.php
Con este comando podemos generar el fichero en función de los parámetros que le indiquemos, obtener las variables indicadas en el fichero u obtener la ruta del fichero.
Generar el fichero:
wp config create --dbname=db_wordpress --dbuser=db_user --dbpass=db_pass --dbhost=localhost
Obtener las variables:
wp config get
Obtener la ruta:
wp config path
Gestionar el core de WordPress
Esta es una opciones que nos proporciona WP-CLI más importantes. Con ella puedes descargar WordPress, instalar y actualizar WordPress, entre otras cosas.
Comprobar si existe una actualización para WordPress:
wp core check-update
Descargar el paquete necesario de WordPress:
wp core download --version=4.9.1 --locale=es_ES
Comprobar si WordPress está instalado:
wp core is-installed
Convertir una instalación individual en una multi-sitio:
wp core multisite-convert --base=https:www.example1.com --subdomains="www.example2.com"
Instalar un multisitio:
wp core multisite-install url=http://ejemplo_wordpress.com --subdomains="www.example2.com" --title="Ejemplo WordPress" --admin_user=admin --admin_password=admin123 --admin_email=ej_wp@gmail.com
Actualizar WordPress:
wp core update
Actualizar la base de datos:
wp core update-db
Comprobar la versión actual de WordPress:
wp core version
Gestionar los cron de WordPress
Con esta opción podemos listar los cron, programar crons, cancelar tareas programadas, lanzar un cron, etc.
Listar los cron:
wp cron event list
Programar un cron:
wp cron event schedule cron_1 now hourly
Si no se pone el intervalo de tiempo (hourly) se ejecuta una sola vez. Listar los intervalos de tiempo:
wp cron event schedule list
Lanzar un cron:
wp cron event run cron_1
Para lanzar todos los que están marcados como 'now':
wp cron event run --due-now
El anterior se utiliza para aquellas instalaciones en las que no funcionan los cron de forma automática, o han sido bloqueados en el fichero wp-config.php.Para lanzar todos los cron:
wp cron event run --all
Borrar un cron:
wp cron event delete cron_1
Gestionar las bases de datos
Con el comando db podemos crear la base de datos que se indica en el fichero wp-config.php, pero para ello antes debemos darle al usuario indicado en wp-config.php permisos sobre dicha base de datos, por lo que es más óptimo crear la base de datos a mano e inmediatamente después darle permisos al usuario sobre dicha base de datos. Para crear la base de datos (después de darle permisos al usuario):
wp db create
Borrar la base de datos (--yes
para saltarse el prompt):
wp db drop --yes
Reiniciar la base de datos (es necesario reinstalar wordpress):
wp db reset --yes
Comprobar el estado de la base de datos:
wp db check
Abrir sesión interactiva de mysql con las credenciales de wp-config.php:
wp db cli
Exportar base de datos (puedes poner el nombre al fichero que quieras):
wp db export db_wordpress.sql
Importar base de datos:
wp db import db_wordpress.sql
Optimizar base de datos:
wp db optimize
Mostrar el prefijo de las tablas:
wp db prefix
Ejecturar sentencia sql
wp db query "select * from wp_users"
Buscar una coincidencia en la base de datos
wp db search "asdf"
Mostrar el tamaño de la base de datos:
wp db size
Listar las tablas:
wp db tables
Testear código PHP
Podemos ejecutar código PHP en nuestra instalación con el comando:
wp eval "phpinfo();"
Para testear el código que queramos, introducidlo entre las comillas.
También podemos testear el código desde un fichero con el comando:
wp eval-file info.php
Cambiar idioma
Podemos instalar, desinstalar, listar, actualizar y activar idiomas.
Instalar un idioma:
wp language core install es_ES
Desinstalar un idioma:
wp language core uninstall es_ES
Listar los idiomas (útil para ver qué idioma y dialecto queremos instalar):
wp language core list
Actualizar las traducciones:
wp language core update
Activar un idioma:
wp language core activate es_ES
Gestionar medios
Podemos listar las imágenes que tenemos en WordPress, así como sus dimensiones con el comando:
wp media image-size
También podemos importar imágenes y otros ficheros con el comando:
wp media import cabecera_01.png
Y regenerar las miniaturas de las imágenes:
wp media regenerate
Gestionar menus
Podemos listar,crear, asignar y borrar los menús del tema actual. También podemos añadir o quitar subelementos de cada menú.
Listar los menus:
wp menu list
Crear un menú:
wp menu create "Principal"
Borrar un menú:
wp menu delete "Principal"
Añadir, borrar, etc un objeto de un menú:
wp menu item (add-custom | delete) "Elemento"
Administrar plugins
También podemos gestionar los plugins. Podemos activar, desactivar, borrar, listar, instalar, desinstalar y actualizar plugins.
Instalar un plugin:
wp plugin install wordpress-seo
Activar un plugin:
wp plugin activate wordpress-seo
Desactivar un plugin:
wp plugin deactivate wordpress-seo
Borrar un plugin:
wp plugin delete wordpress-seo
Desinstalar un plugin (el plugin debe estar desactivado):
wp plugin uninstall wordpress-seo
Actualizar un plugin:
wp plugin update wordpress-seo
Además de esto, también se puede instalar un plugin y activarlo al mismo tiempo con el comando:
wp plugin install wordpress-seo --activate
Administrar las entradas
Podemos crear una entrada a partir de un fichero, borrar, editar, listar y actualizar entradas.
Crear una nueva entrada a partir de un fichero:
wp post create entrada.txt
Borrar una entrada (se diferencian por el ID):
wp post delete 4
Editar una entrada:
wp post edit 4
Listart todas las entradas:
wp post list
Actualizar un post:
wp post update 4
Para listar los tipos de etiquetas:
wp post-type list
Reglas rewrite
Listar las rewrite utilizadas:
wp rewrite list
Hacer que las rewrite empiecen a ejecutarse:
wp rewrite flush
Gestionar roles
También podemos crear roles, así como borrar, listar y reiniciar.
Comprobar si un rol existe:
wp role exists editor
Listar los roles:
wp role list
Crear un nuevo rol:
wp role create Administrador_comentarios comment_manager
Borrar un rol:
wp role delete Administrador_comentarios
Reiniciar un rol a su estado inicial (sólo roles por defecto):
wp role reset editor
Scaffold
Este comando permite generar el código inicial para empezar a desarrollar un plugin, crea los ficheros necesarios para crear un tema hijo partiendo de un tema instalado, etc.
Crear un tema hijo partiendo de uno ya instalado:
wp scaffold child-theme twentyseventeen_child --parent_theme=twentyseventeen
Generar código inicial al crear un plugin:
wp scaffold plugin nuevo_plugin
Reemplazar strings en la base de datos
Con el comando search-replace podemos reemplazar strings en la base de datos. Podemos hacer que se reemplace en toda la base de datos (por defecto), en una tabla, etc.
wp search-replace wordpress WordPress
Listar barras laterales
Podemos listar las barras laterales que hay en el tema actual:
wp sidebar list
Administrar sitios
También podemos ejecutar subcomandos para gestionar los sitios en la misma instalación de WordPress. Para ello se debe indicar que el WordPress es un multisitio. Para ello hay que indicarlo a la hora de instalar WordPress:
wp core multisite-install ...
Crear un stio:
wp site create --slug=example1
Borrar un sitio:
wp site delete 12
Activar un sitio:
wp site activate example1
Desactivar un sitio:
wp site deactivate example1
Listar todos los sitios:
wp site list
También relacionado con los multisitios, podemos crear, borrar o listar super administradores con los comandos:
wp super-admin ( add | remove | list )
Si quieres ver más opciones, utiliza el argumento --help.
Gestionar taxonomías
Podemos obtener los detalles de una taxonomía con el comando:
wp taxonomy get category
Además podemos listar las taxonomías:
wp taxonomy list
Administrar Terms
Podemos administrar los terms del sitio (categorías, etiquetas, URLs, etc.)
Para crear un nuevo term:
wp term create category SEO --description="Categoría para los artículos relacionados con el SEO"
Listar las categorías:
wp term list category
Borrar categoría
wp term delete category 6
Administrar temas
Podemos instalar, activar, borrar, listar y actualizar los temas (uno en concreto, una lista o todos a la vez).
Para instalar un tema debemos indicar el nombre del tema:
wp theme install twentyfourteen
Activar el tema:
wp theme activate twentyfourteen
Borrar:
wp theme delete twentyfourteen
Listar temas:
wp theme list
Actualizar todos los temas:
wp theme update --all
Gestionar usuarios
Procederemos a comentar cómo gestionar usuarios. Podemos añadir privilegios a un usario, añadir un rol para un usuario, crear usuarios, borrar, listar, etc.
Listar usuarios:
wp user list
Crear un usuario
wp user create user1 user1@gmail.com --user_pass=user1
Borrar un usuario:
wp user delete user1
Añadir rol a un usuario:
wp user add-role user1 editor
Administrar widgets
Ahora vamos a comentar cómo se pueden gestionar los widgets.
Podemos añadir un widget a una barra lateral, desactivar, borrar, listar, mover un widget, reiniciar y por último actualizar los widgets.
Listar los widgets de una barra lateral:
wp widget list sidebar-1
Añadir un widget:
wp widget add search-2 sidebar-1
Desactivar un widget:
wp widget deactivate search-2
Borrar un widget:
wp widget delete meta-2
Mover un widget:
wp widget move archives-2 --sidebar-id=sidebar-2
Para reiniciar una barra lateral, es decir, poner los widgets por defecto:
wp widget reset sidebar-1
Conclusión
WP-CLI es una herramienta realmente potente, pero requiere dedicarle algo de tiempo para entender cómo funciona.
Incluso teniendo una única instalación de WordPress se gana muchísima rapidez a la hora de administrar WordPress con WP-CLI que con la interfaz de WordPress, pero WP-CLI brilla cuando quieres administrar varios sitios en WordPress, pues puedes gestionar todos ellos simplemente accediendo al servidor (o servidores) por ssh, y utilizando wp-cli en cada instalación de forma individual. También es posible optimizar todavía más el rendimiento creando scripts para realizar las tareas en todas las instalaciones con una única ejecución del script. Un ejemplo sería crear un script en bash en el que se actualicen todas las instalaciones de WordPress de golpe.
En esencia, si administras uno o más sitios en WordPress, te interesa aprender a utilizar WP-CLI para ganar muchísima rapidez a la hora de gestionar WordPress, siempre y cuando tu hosting te permita el uso de WP-CLI.