Principal
/
Tutorial WordPress
/
Tutorial WP-CLI

Tutorial WP-CLI

WP-CLI es una interface que permite a los usuarios administrar sus sitios WordPress desde una pantalla de comandos. Se pueden hacer actualizaciones, crear backups, nuevos post pueden ser publicados y las acciones más comunes del área administrativa pueden ser realizadas.

Este tutorial explica cómo utilizar la interface de comandos para WP para completar tareas administrativas, actualizaciones, creación de copias de base de datos, plugins, instalar temas y quitar, publicar y eliminar entradas, cambiar las URLS de los sitios y obtener ayudar en los comandos elegidos. Ten en cuenta que WP-CLI requiere acceso SSH.

Lista de comandos disponibles para WP-CLI

Para una lista de todos los comandos escribe “wp help” o solo “wp”. Se mostrará lo siguiente:

akismet           Filter spam comments.
cache             Manage the object cache.
cap               Manage user capabilities.
checksum          Verify WordPress core checksums.
cli               Review current WP-CLI info, check for updates, or see defined aliases.
comment           Manage comments.
config            Manage the wp-config.php file
core              Download, install, update and manage a WordPress install.
cron              Manage WP-Cron events and schedules.
db                Perform basic database operations using credentials stored in wp-config.php
eval              Execute arbitrary PHP code.
eval-file         Load and execute a PHP file.
export            Export WordPress content to a WXR file.
help              Get help on WP-CLI, or on a specific command.
import            Import content from a WXR file.
jetpack           Control your local Jetpack installation.
language
media             Import new attachments or regenerate existing ones.
menu              List, create, assign, and delete menus.
network
option            Manage options.
package           Manage WP-CLI packages.
plugin            Manage plugins.
post              Manage posts.
post-type         Manage post types.
rewrite           Manage rewrite rules.
role              Manage user roles.
scaffold          Generate code for post types, taxonomies, plugins, child themes, etc.
search-replace    Search/replace strings in the database.
server            Launch PHP's built-in web server for this specific WordPress install.
sg                Manage SiteGround Cache
sgphpcompat       Test compatibility with different PHP versions.
shell             Interactive PHP console.
sidebar           Manage sidebars.
site              Perform site-wide operations.
super-admin       Manage super admins on WordPress multisite.
taxonomy          Manage taxonomies.
term              Manage terms.
theme             Manage themes.
transient         Manage transients.
user              Manage users.
widget            Manage sidebar widgets.

Si quieres obtener la documentación detallada, por ejemplo para el comando “wp db export”, introduce lo siguiendo:

wp help db export

Como resultado verás lo siguiente:

NAME

  wp db export

DESCRIPTION

  Exports the database to a file or to STDOUT.

SYNOPSIS

  wp db export [<file>] [--<field>=<value>] [--tables=<tables>] [--exclude_tables=<tables>] [--porcelain]

ALIAS

  dump

  Runs `mysqldump` utility using `DB_HOST`, `DB_NAME`, `DB_USER` and
  `DB_PASSWORD` database credentials specified in wp-config.php.

OPTIONS

  [<file>]
    The name of the SQL file to export. If '-', then outputs to STDOUT. If omitted, it will be '{dbname}.sql'.

  [--<field>=<value>]
    Extra arguments to pass to mysqldump

  [--tables=<tables>]
    The comma separated list of specific tables to export. Excluding this parameter will export all tables in the database.

  [--exclude_tables=<tables>]
    The comma separated list of specific tables that should be skipped from exporting. Excluding this parameter will export all tables in the database.

  [--porcelain]
    Output filename for the exported database.

EXAMPLES

    # Export database with drop query included
    $ wp db export --add-drop-table
    Success: Exported to 'wordpress_dbase.sql'.

    # Export certain tables
    $ wp db export --tables=wp_options,wp_users
    Success: Exported to 'wordpress_dbase.sql'.

    # Export all tables matching a wildcard
    $ wp db export --tables=$(wp db tables 'wp_user*' --format=csv)
    Success: Exported to 'wordpress_dbase.sql'.

    # Export all tables matching prefix
    $ wp db export --tables=$(wp db tables --all-tables-with-prefix --format=csv)
    Success: Exported to 'wordpress_dbase.sql'.

    # Skip certain tables from the exported database
    $ wp db export --exclude_tables=wp_options,wp_users
    Success: Exported to 'wordpress_dbase.sql'.

Actualizar WordPress con WP-CLI

Primero, necesitas verificar la versión actual de WordPress que tienes:

username@servername [~/WordPress/location]# wp core version
5.2.1

Si quieres ampliar tu WordPress a una versión más reciente, puedes hacerlo con el siguiente comando:

username@servername [~/WordPress/location]# wp core update
Updating to version 4.8.1 (en_US)...
Downloading update from https://downloads.wordpress.org/release/wordpress-4.8.1-partial-0.zip...
Unpacking the update...
Success: WordPress updated successfully.

Actualizar los plugins de WordPress con WP-CLI

Si quieres hacer una actualización de cualquier plugin o tema adicional en tu sitio WordPress, pudes hacerlo con WP-CLI. Para ver por ejemplo el estado de los plugins instalados actualmente, utiliza este comando:

username@servername [~/WordPress/location]# wp plugin list
+----------------+----------+-----------+---------+
| name           | status   | update    | version |
+----------------+----------+-----------+---------+
| akismet        | active   | available | 3.3.2   |
| google-captcha | active   | none      | 1.31    |
| hello          | inactive | none      | 1.6     |
| jetpack        | active   | none      | 5.3     |
| sg-cachepress  | active   | none      | 3.3.2   |
+----------------+----------+-----------+---------+

Tenemos 5 plugins integrados en nuestra instalación de ejemplo. Hay una actualización disponible para uno de ellos. Para hacer la actualización de ese plugin, se puede utilizar este comando:

username@servername [~/WordPress/location]# wp plugin update akismet
Enabling Maintenance mode...
Downloading update from https://downloads.wordpress.org/plugin/akismet.3.3.4.zip...
Unpacking the update...
Installing the latest version...
Removing the old version of the plugin...
Plugin updated successfully.
Disabling Maintenance mode...
+---------+-------------+-------------+---------+
| name    | old_version | new_version | status  |
+---------+-------------+-------------+---------+
| akismet | 3.3.2       | 3.3.4       | Updated |
+---------+-------------+-------------+---------+
Success: Updated 1 of 1 plugins.

Instalar y activar Temas o Plugins de WordPress a través de WP-CLI

Para instalar y activar un nuevo plugin, ejecuta el siguiente comando:

    wp plugin install Plugin_Name
    wp plugin activate Plugin_Name

Debes sustituir “Plugin_Name” por el nombre del plugin a utilizar.

Instalación y uso de WP Doctor

WP Doctor es una herramienta desarrollada para ayudar a diagnosticar problemas con tu WordPress como fallos en actualización, página en blanco, inconvenientes al cargar, etc. Para usar la herramienta, debes instalarla primero. Puedes hacerlo ejecutando el comando a continuación en el directorio principal de WordPRess:

wp package install git@github.com:wp-cli/doctor-command.git

Luego de instalar la herramienta exitosamente, puedes empezar a utilizar el comando wp doctor.

Para verificar todas las opciones disponibles del comando, usa:

wp doctor --help

Para ejecutar todas las comprobaciones por defectos, ejecuta el siguiente comando:

wp doctor check --all

Las verificaciones que hará la herramienta son:

core-verify-checksums – verifica los checksums de WordPRess.

file-eval – Verificar los archivos en el sistema para el patrón n eval(.*base64_decode(.* que en la mayoría de los casos es un código sospechoso.

cache-flush – Detectar el número de ocurrencias de la función wp_cache_flush() .

autoload-options-size – Advertir cuando la opción de cargar excede le threshold de 900kb

constant-savequeries-falsy – Confimar el estado esperado de la constante SAVEQUERIES. SAVEQUERIES hace que WordPress guarde los registros de las peticiones SQL, que es una fuente de operaciones pesadas, por lo que no aconsejamos usar SAVEQUERIES en producción.

constant-wp-debug-falsy – Verifica si está activado el wp debug is con el estado de la constante WP_DEBUG.

core-update – Verifica si la aplicación está actualizada. Los errores se muestan cuando una versión menor está disponible; advierte cuando hay una actualización mayor.

cron-count – Verifica la cantidad de cron jobs y muestra un error cuando se exceden los 50 en total.

cron-duplicates – Verifica la cantidad de con jobs duplicados y muestra un error cuando estos son más de 10.

option-blog-public – Verifica si el sitio web está disponible públicamente con el valor de la opción blog_public.

plugin-active-count – Muestra una advertencia cuando hay más de 80 plugins activos.

plugin-deactivated – Muestra una advertencia cuando el 50% de los plugins está desactivado.

plugin-update – Shows a warning when there are plugin updates available.

theme-update – Muestra una advertencia cuando está disponible una actualización del tema.

php-in-upload – Muestra una advertencia cuando un archivo PHP está en la carpeta Uploads.

language-update – Verifica si está disponible una nueva versión del idioma instalado.

Si prefieres ejecutar solo 1 o algunos de estos, puedes especificarlo usando el que deseas en lugar de la opción –all. Puedes verificar cómo hacerlo en los ejemplos a continuación:

wp doctor check autoload-options-size

o

wp doctor check autoload-options-size core-verify-checksums

Instalación y uso de WP Profile

WP Profile es una herramienta desarrollada para ayudar a diagnosticar problemas en sitios WordPress lentos. La idea principal de la extensión es dividir los procesos de landing en secciones, dándole la capacidad de ser rastreados. Esto provee información acerca de los tiempos, respuestas y ubicaciones. Para usar la herramienta, primero debes instalarla. Puedes hacerlo ejecutando el comando a continuación en el directorio de tu WordPress:

wp package install wp-cli/profile-command

Luego de haber instalado la herramienta exitosamente, puedes empezar a usar el comando wp profile.

Para ver todas las opciones disponibles para el comando, utiliza:

wp profile --help

Los subcomandos de wp profile son:

  • eval – Ejecución arbitraria del código del perfil. También conocida como ACE (arbitrary code execution) se usa para describir la posibilidad de que un atacante ejecute comandos arbitrarios o códigos ent u web.
  • eval file – Ejecución arbitraria del perfil de un archivo.
  • hook – Perfil de las métricas importantes de WordPress (acciones y filtros).
  • stage – Perfil de cada etapa de la carga de los procesos WordPress (bootstrap, main_query, template).

Para investigar la carga lenta del sitio, empieza usando el sub-comando stage como se muestra aquí::

wp profile stage

Debes ejecutar el comando en la carpeta de la instalación. El resultado será una tabla que muestra la información acerca de los procesos de carga del sitio. Las columnas más importantes de la tabla son:

  • Stage – Las etapas son 3 – bootstrap, main_query, template. En pocas palabras – bootstrap es donde el WordPress se configura, carga plugins y el tema principal y empieza los primeros procesos, main_query  es como WordPress procesa las solicitudes con las peticiones  y procesos, template es donde WordPress determina cual de los temas debe cargar basado en la petición principal.
  • Time – Muestra el tiempo que tarda cada etapa en cargar.
  • Cache ratio – Muestra el porcentaje de cache en cada etapa.

Verifica cuál de las etapas toma más en cargar (ejemplo bootstrap) y ejecuta este comando:

wp profile stage bootstrap --spotlight

Usa —spotlight para filtrar los valores en blanco.

Lo que generalmente hace lento un WordPress no son sus funciones nativas, sino los plugins. Rastréalos usando:

wp profile hook plugins_loaded --fields=callback,time,location --spotlight

El resultado de este comando te dará la información de los tiempos de carga de diferentes plugins.

Otras tareas que puedes hacer con WP-CLI

Puedes escribir directamente la línea de comando. Para crear una entrada, ejecuta lo siguiente:

username@servername [~/WordPress/location]# wp post create --post_type=page --post_status=publish --post_title='My test post' --post_content='This is a test post'
Success: Created post 18.

Si no necesitas alguna entrada, puedes eliminarla fácilmente:

username@servername [~/WordPress/location]# wp post delete 18
Success: Trashed post 18.

Puedes crear un backup de la base de datos de WordPress con WP-CLI, usando el siguiente comando:

username@servername [~/WordPress/location]# wp db export
Success: Exported to 'username_wp123-3150ba8.sql'.

Si decides cambiar el dominio principal para el sitio WordPress, puedes fácilmente cambiar las URL con:

wp option update home https://newdomain.com
wp option update siteurl https://newdomain.com

Puedes encontrar más detalles y ayuda con los comando en la página principal del proyecto.

Menú Tutorial

Comparte este artículo