WP-CLI

WP-CLI Parte 8, Scaffold: genera esqueletos de código para post types, taxonomías, plugins, child themes…

Octava entrega de la serie WP-CLI. Vamos a ver cómo generar esqueletos de código para crear nuestros custom post types, taxonomías, plugins, child themes…

Si eres desarrollador, el comando wp scaffold te va a venir como anillo al dedo. Éste comando consta de los siguientes subcomandos:

  • child-theme, genera un child theme basado en el tema activado.
  • plugin, genera un código base para crear tu propio plugin. Crea un starter plugin, como referencia para tu desarrollo.
  • plugin-tests, genera los ficheros necesarios para correr test unitarios en tu plugin (PHPUnit).
  • post-type, genera el código PHP necesario para registrar un custom post type.
  • taxonomy, genera el código PHP necesario para registrar una custom taxonomy.
  • theme-tests, genera los ficheros necesarios para correr test unitarios en tu tema (PHPUnit).
  • _s, genera un código base para crear tu propio tema basado en Underscores (_s).

¿Cómo te quedas? Interesante, ¿no? Veamos estos comandos con más detenimiento

Genera el código necesario para crear custom post types y custom taxonomies

No se tu, pero antes cada vez que tenía que crear un custom post type o una custom taxonomy acababa yendo al codex de WordPress o a GeneratePress a obtener un código limpio para crearlo. Ahora disponemos de los comandos wp scaffold post-type y wp scaffold taxonomy para hacer estas tareas.

Para registrar un nuevo custom post type, nos serviremos del comando wp scaffold post-type, que acepta los siguientes parámetros:

  • <slug>, para establecer el identificador o nombre de nuestro post type.
  • [--label=<label>], el texto que usaremos para los botones y menús del escritorio de WordPress. Por defecto se configura para el multi-idioma.
  • [--textdomain=<textdomain>], nuestro textdomain para traducir las cadenas.
  • [--dashicon=<dashicon>], para establecer un icono en el menú del escritorio de WordPress (https://developer.wordpress.org/resource/dashicons/#products).
  • [--theme], para indicar que cree un archivo PHP en nuestro tema con el código generado en lugar de imprimirlo por pantalla.
  • [--plugin=<plugin>], para indicar que cree un archivo PHP en el plugin indicado con el código generado en lugar de imprimirlo por pantalla.
  • [--raw], para generar únicamente el código para registrar el post-type, sin crear las funciones que se enganchan al init y al post_update_messages.
  • [--force], sobreescribe los ficheros si ya existen.

Un simple ejemplo:

wp scaffold post-type mycpt --label=mylabel --textdomain=mytextdomain --raw
wp scaffold post-type

Una vez tenemos el código, podemos pegarlo en nuestro functions.php o en nuestro plugin, hacer las modificaciones que necesitemos y listo.

Para las taxonomías es muy parecido. Los parámetros que acepta el comando wp scaffold taxonomy son los siguientes:

  • <slug>, para establecer el identificador o nombre de nuestra taxonomía.
  • [--post_types=<post-types>], post-types registrados a los que asociamos la nueva taxonomía.
  • [--label=<label>], el texto que usaremos para los botones y menús del escritorio de WordPress. Por defecto se configura para el multi-idioma.
  • [--textdomain=<textdomain>], nuestro textdomain para traducir las cadenas.
  • [--theme], para indicar que cree un archivo PHP en nuestro tema con el código generado en lugar de imprimirlo por pantalla.
  • [--plugin=<plugin>], indicar que cree un archivo PHP en el plugin indicado con el código generado en lugar de imprimirlo por pantalla.
  • [--raw], generar únicamente el código para registrar el post-type, sin crear las funciones que se enganchan al init y al post_update_messages.
  • [--force], sobreescribe los ficheros si ya existen.
wp scaffold taxonomy mytax --label=mylabel --post_types=mycpt --textdomain=mytextdomain --raw

Genera el código necesario para crear tu propio plugin

La cosa empieza a ponerse interesante. Con WP-CLI podemos generar el esqueleto de un plugin. Una base sobre la que desarrollar nuestro plugin. Una manera de superar el síndrome del folio en blanco.

El comando wp scaffold plugin acepta los siguientes parámetros:

  • <slug>, el slug o identificador de nuestro plugin.
  • [--dir=<dirname>], si queremos crear los ficheros en un directorio diferente al de plugins.
  • [--plugin_name=<title>], el nombre del plugin que será visible en el escritorio de WordPress.
  • [--plugin_description=<description>], la descripción de lo que hace nuestro plugin.
  • [--plugin_author=<author>], el nombre del autor o autores del plugin.
  • [--plugin_author_uri=<url>], URL del autor o autores del plugin.
  • [--plugin_uri=<url>], URL de la página del plugin.
  • [--skip-tests], para no generar los ficheros necesarios para correr test unitarios en nuestro plugin.
    [–ci=<provider>], para escoger la herramienta de integración continua. Las opciones son ‘travis’ (por defecto), ‘circle’ y ‘gitlab’.
  • [--activate], activar el plugin una vez creado.
  • [--activate-network], activar el plugin para toda la red (en caso de instalación multisite).
  • [--force], para forzar sobre-escribir el plugin en caso de que ya exista.
wp scaffold plugin myplugin --plugin_name="My Plugin" --plugin_description="My Description"
wp scaffold plugin

Si nos vamos a la carpeta /wp-content/plugins/ veremos que nos ha creado una carpeta llamada myplugin, y dentro encontraremos los siguientes archivos:

wp scaffold plugin files

Como vemos es una instalación base, un esqueleto a partir del cual empezar a desarrollar nuestro plugin.

Genera el código necesario para crear tu propio tema o tema hijo

También podemos crear el esqueleto de un tema, basado en el starter theme Underscores, también conocido como _s. Lo conseguimos a partir del comando wp scaffold _s. Éste comando acepta los siguientes parámetros:

  • <slug>, el slug o identificador de nuestro tema.
  • [--activate], activar el tema una vez creado.
  • [--enable-network], para habilitar el tema para toda la red (en caso de instalación multisite).
  • [--theme_name=<title>], el nombre que se establecerá en las cabeceras de style.css (y que aparecerá después en el gestor de temas del escritorio de WordPress).
  • [--author=<full-name>], el nombre del autor o autores del tema.
  • [--author_uri=<uri>], URL del autor o autores del tema.
  • [--sassify], para incluir la hojas de estilos del tema en formato SASS.
  • [--force], forzar sobre-escribir el tema en caso de que ya exista.
wp scaffold _s mytheme --theme_name="My Theme"

Al igual que antes, siempre viene bien de tirar de una base para superar el síndrome del folio en blanco. Nuestro tema dispondrá de una estructura básica que incluye:

  • Los ficheros de la jerarquís de plantillas de WordPress: index.php, header.php, footer.php, functions.php, archive.php, single.php, page.php, 404.php, comments.php, search.php y sidebar.php.
  • inc/ para añadir los includes.
  • js/ para añadir archivos JavaScript.
  • languages/ para la internacionalización de nuestro tema.
  • layouts/ para almacenar CSS
  • template-parts/ para los archivos de plantilla.

¿Pero y si lo que queremos es generar un Child-theme de un tema existente? También podemos con WP-CLI, a través del comando wp scaffold child-theme. Acepta los siguientes parámetros:

  • <slug>, el slug o identificador de nuestro tema hijo.
  • --parent_theme=<slug>, el slug del tema padre sobre el que heredaremos.
  • [--theme_name=<title>], el nombre que se establecerá en las cabeceras de style.css (y que aparecerá después en el gestor de temas del escritorio de WordPress).
  • [--author=<full-name>], el nombre del autor o autores del tema.
  • [--author_uri=<uri>], URL del autor o autores del tema.
  • [--theme_uri=<uri>], URL del tema.
  • [--activate], para activar el tema una vez creado.
  • [--enable-network], para habilitar el tema para toda la red (en caso de instalación multisite).
  • [--force], forzar sobre-escribir el tema en caso de que ya exista.
wp scaffold child-theme mychildtheme --parent_theme=twentyseventeen

Este comando simplemente creará un archivo style.css con las cabeceras del tema hijo:

/*
Theme Name:     Mychild
Theme URI:      
Description:    Twentyseventeen child theme.
Author:         Me
Author URI:     
Template:       twentyseventeen
Version:        0.1.0
*/

y un archivo functions.php con la inclusión de la hoja de estilos del tema hijo y del tema padre:

<?php

function twentyseventeen_parent_theme_enqueue_styles() {
    wp_enqueue_style( 'twentyseventeen-style', get_template_directory_uri() . '/style.css' );
    wp_enqueue_style( 'mychild-style', get_stylesheet_directory_uri() . '/style.css', array( 'twentyseventeen-style' ));
}
add_action( 'wp_enqueue_scripts', 'twentyseventeen_parent_theme_enqueue_styles' );

¿Te ha resultado útil esta información? 🍺

Si este post te ha resuelto un problema, invítame a un café o a una cerveza. Con este pequeño gesto me animas a seguir escribiendo.

Comentarios

Deja un comentario

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

  • El fin del tratamiento es únicamente la moderación de comentarios para evitar spam
  • La legitimación es tu consentimiento al comentar
  • No se comunicará ningún dato a terceros salvo por obligación legal
  • Tienes derecho al acceso, rectificación y eliminación de los comentarios