Hacer funcionar wp-cli para publicar desde la shell

wp-cli viene bien tenerlo instalado para administrar un wordpress desde línea de comandos. Es por eso que me salto la explicación de como montar un wordpress (aquí tienes una) y paso directamente a como se monta wp-cli.
 

Instalar wp-cli

 
Instalamos como root algunas dependencias:
 

# apt-get install curl less

 
Creamos desde un usuario normal un directorio llamado .bin que estará en el directorio del usuario que usemos:
 

$ mkdir -p ~/.bin 

Añadimos la ruta de ese directorio al PATH editando el archivo .bashrc que estará en ~/.bashrc :
 

if [ -d "$HOME/.bin" ]; then
  PATH="$HOME/.bin:$PATH"
fi

 
Hemos de fijarnos que vamos a crear un directorio oculto llamado .bin y no bin.
 
Recargamos:

$ source .bashrc

 
Comprobamos que está en el PATH el nuevo directorio así:
 

$ echo $PATH

 
Ahora descargamos ya wp-cli así:
 

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

 
Veremos algo similar a esto:
 

 
Damos permisos de ejecutable a wp-cli.phar y lo movemos (como root) renombrado a wp ~/.bin/
 

$ chmod +x wp-cli.phar
# mv wp-cli.phar ~/.bin/wp

 
Como usuario probamos de nuevo:
 

$ wp --info

 
Felicidades. Ya tienes wp-cli instalado en tu sistema y ejecutable por el usuario con el que has seguido los pasos.
 
Si deseas actualizar en un futuro wp-cli has de emplear el siguiente comando:
 

$ wp cli update

 
Hasta aquí la parte sencilla. Ahora viene la siguiente parte opcional para quienes quieren afinar un poco wp-cli.
 

Autocompletado en bash

 
Añadimos el siguiente contenido al archivo ~/.bashrc :
 

_wp_complete() {
	local OLD_IFS="$IFS"
	local cur=${COMP_WORDS[COMP_CWORD]}

	IFS=$'\n';  # want to preserve spaces at the end
	local opts="$(wp cli completions --line="$COMP_LINE" --point="$COMP_POINT")"

	if [[ "$opts" =~ \\s* ]]
	then
		COMPREPLY=( $(compgen -f -- $cur) )
	elif [[ $opts = "" ]]
	then
		COMPREPLY=( $(compgen -f -- $cur) )
	else
		COMPREPLY=( ${opts[*]} )
	fi

	IFS="$OLD_IFS"
	return 0
}
complete -o nospace -F _wp_complete wp

 
Recargamos para que chute el autocompletado:
 

source .bashrc

 
Ahora ya si vamos escribiendo y pulsando tabulador vamos a poder autocompletar los comandos posibles tal y como se puede ver en la captura:
 

 
wp-cli funcionará sin tener que pasar rutas si lo ejecutamos en el directorio del aplicativo en el que tengamos el wordpress desplegado. Por ejemplo: /var/www/wordpress
 

Un archivo de configuración para no tener que especificar rutas, usuarios, …

 
Hemos de crear un archivo en nuestro home con este nombre:
 

$ mkdir -p ~/.wp-cli/
$ touch ~/.wp-cli/config.yml

 
En el que meteremos configuración como por ejemplo esto:

path: /var/www/wordpress/
url: https://miweb.com
user: usuarioenwordpress

 

Cambiar el editor por vim o nano o emacs

En .bashrc añadimos esto (cambiando vim por nano, emacs, joe, micro, … o el editor que usemos):
 

export EDITOR=vim

 
Eso nos permitirá poder usar un editor que nos mole para actualizar entradas. Por ejemplo así: wp post edit 27
Siendo 27 el id de la entrada. Se pueden ver los id con wp post list .
 

Enviar un articulo que se publicará inmediatamente

 
Un ejemplo de articulo que irá a publicarse sin revisar (publish en post_status), con una fecha que le pasemos, sin permitir comentarios, con un titulo y un contenido en html:
 
wp post create --post_type=post --post_status='publish' --post_date='2017-12-07 10:10:10' --ping_status='close' --comment_status='close' --post_title='un titulo de ejemplo' --post_content='hola mundo mundial'
 
Eso no es todo pero si lo base para comenzar a usar wp-cli. Un saludo.

Deja un comentario