- 1. Instalación y primeros pasos
- 2. Instalando WordPress y primeros pasos y configuraciones
- 3. Trabajando con posts
- 4. Trabajando con usuarios
- 5. Trabajando con la base de datos
- 6. Search & Replace, un comando imprescindible
- 7. Importar y Exportar contenido
- 8. Scaffold, genera esqueletos de código
- 9. Paquetes de comandos adicionales
- 10. Crea tus propios comandos
En esta tercera entrada de la serie WP-CLI vamos a ver cómo trabajar con posts.
Para trabajar con posts utilizaremos el comando wp post. Éste comando dispone de los siguiente subcomandos:
- wp post create, para crear un nuevo post
- wp post delete, para borrar un post
- wp post edit, abre un editor para modificar el post_content
- wp post generate, para generar un lote de posts
- wp post get, para obtener detalles de un post
- wp post list, para obtener un listado de posts
- wp post meta, para administrar post meta
- wp post term, para administrar terms
- wp post update, para actualizar posts
Vamos a ver a continuación algunos ejemplos:
Creando un post con WP-CLI
Para crear un post individual utilizaremos el comando wp post create. Este comando acepta los parámetros:
-
[<file>]
, almacena en post_content el contenido de <file>. -
[--<field>=<value>]
, par clave/valor. -
[--edit]
, abre el editor de archivos del sistema para escribir el post_content -
[--porcelain]
, devuelve el post_id
En [--<field>=<value>]
podemos establecer valores para algunos campos como:
- ID
- post_author
- post_date
- post_content
- post_title
- post_excerpt
- post_status
- post_type
- post_password
- post_name
- post_parent
- menu_order
- post_category
Ejemplo:
wp post create --post_title="Pagina desde linea de comandos" --post_content="lorem ipsum dolor sit amet" --post_type="page" --menu_order=7
Genera un lote de posts desde la línea de comandos
A veces es interesante generar un lote de posts, para ver cómo funciona nuestra página: ver cómo queda un listado, probar la paginación, etc…
Si estamos desarrollando un proyecto nuevo tenemos la opción de crear un lote de 50 posts a mano, con todo el tiempo que esto conlleva, o hacer uso del comando wp post generate. Este comando admite los siguientes parámetros:
-
[--count=<number>]
, el número de posts que queremos generar. Por defecto 100. -
[--post_type=<type>]
, el tipo de post que queremos generar. Por defecto post. -
[--post_status=<status>]
, el estado de los posts que queremos generar. Por defecto publish. -
[--post_author=<login>]
, para asignar un autor a los posts que queremos generar. -
[--post_date=<yyyy-mm-dd>]
, para establecer una fecha a los posts que queremos generar. -
[--post_content]
, para asignar contenido a los posts. -
[--max_depth=<number>]
, para posts que sean de tipo hierarchical -
[--format=<format>]
, para que nos devuelva en la salida una barra de progreso o los ids de los posts que se están generando. Por defecto progress.
Por ejemplo, si queremos generar un lote de 50 posts, bastará con esta instrucción:
curl http://loripsum.net/api/5 | wp post generate --post_content --count=50
Se generarán los posts: Entrada 1, Entrada 2 …. Entrada 50 en apenas unos segundos, y dispondremos de contenido dummy para hacer testeos en nuestro entorno.
Obtén un listado de posts con WP-CLI
Si queremos obtener un listado de posts en pantalla, disponemos del comando wp post list. Acepta los siguientes parámetros:
-
[--<field>=<value>]
, uno o más args que se pasarán a la WP_Query que devolverá el listado. -
[--field=<field>]
, para imprimir únicamente un campo concreto en la salida. -
[--fields=<fields>]
, para limitar la salida a campos específicos. -
[--format=<format>]
, para mostrar la salida en un formato determinado. Por defecto tabla. Acepta: table, csv, ids, json, count, yaml
Por ejemplo, si queremos mostrar simplemente un listado de post, nos bastará con el comando: wp post list, y se nos mostrará en pantalla algo como esto:
Si queremos especificar una serie de campos concretos, bastará con indicarlos separados por coma:
wp post list --fields=ID,post_title,post_author
Elimina un post con WP-CLI
Con WP-CLI podemos también eliminar uno o varios posts desde la consola. El comando es wp post delete, y acepta los siguientes parámetros:
-
<id>
, uno o más IDs (separados por coma) para eliminar (quedarán en papelera) -
[--force]
, para forzar la eliminación completa de los posts, no quedarán en papelera -
[--defer-term-counting]
, para obviar la llamada a wp_defer_term_counting() y evitar varias queries y mejorar el rendimiento del proceso
Por ejemplo, si queremos eliminar los posts con ID 55, 56 y 57, ejecutaremos el siguiente comando:
wp post delete 55,56,57
Esto los pondrá en papelera (post_status=trash). Si quisiéramos eliminarlos completamente tendríamos que añadir el parámetro –force.
También podemos eliminar posts sacando sus IDs de un listado, combinando dos comandos:
wp post delete (wp post list --post_status=trash --format=ids)
De este modo eliminaremos todos los posts que están en la papelera.