¿Se te ha ocurrido combinar los Custom Post Types con el nuevo editor de bloques y sus Block Templates?
Cuando vinculas una plantilla de bloques a un CPT, o lo que es lo mismo, determinas la estructura por defecto que van a tener sus entradas, consigues que el usuario de esa web (tú o tu cliente) solo tenga que preocuparse de introducir la información, nada más.
Échale un ojo a la charla que di en la WordCamp Granada 2019, donde repaso la estructura básica de un CPT (a nivel de código) y muestro cómo usar la API para registrar un array de bloques mediante PHP.
Aprenderás a crear una plantilla de bloques y, además, descubrirás la dos opciones que existen para «bloquear» las plantillas y evitar así que tu cliente la cambie más de lo necesario.
¿Prefieres leer?
Aquí tienes un resumen:
Qué es un CPT
Los Custom Post Types son tipos de entrada personalizada y uno de los motivos por los que amamos a WordPress (al menos por mi parte). 🙂
¿Y cómo se usa un CPT? Puedes:
- Incluir contenido estático o dinámico, por ejemplo: productos, cursos, directorio, porfolio…
- Usar taxonomías propias para filtrar.
- Crear híbridos entre entradas y páginas.
- Y, de lo que va este tutorial, maquetar a tu gusto usando plantillas de página. 😉
Qué es un Block Template
Muy fácil:
Un Block Template es una plantilla de bloques; es decir, una página que tiene un esqueleto determinado de bloques.
Y cuando unes un Block Template a un CPT, ¿sabes qué ocurre?
Surge el amor. 😉
Ejemplos de CTP y Block Templates ideales el uno para el otro
Un membershipsite con recursos que siempre tienen la misma estructura:
Entradas de podcast semanal con una escaleta marcada:
Entrada de un CPT para podcast con escaleta Plantilla de bloques asociada al CPT podcast
Las entradas de un blog sobre rutas de senderismo:
Block Templates para el CPT de un blog de viajes
Como ves puedes, las opciones son tanta como puedas imaginar.
Ya sabes el qué, ahora el cómo. 😉
Paso a paso: cómo vincular un Custom Post Type a un Block Template
1. Crea tu Custom Post Type
Para crear un CPT mínimo viable necesitas muy poco líneas de código, utilizar la función register_post_type
y engancharla al action hook «init».
Pero como puedes ver en el PDF de la charla, un CPT puede complicarse todo lo que necesites:
- Puedes indicar el texto que aparecerá en escritorio de WordPress,
- los argumentos (tiene archivo, es como una página…),
- registrar taxonomías con
register_taxonomy
…
En este tutorial te explico cómo crear un Custom Post Type con código a tu medida.
Asegúrate de tu CPT contiene show_in_rest => true
y soporte para el editor para que sea compatible con un block template.
2. Crea tu block template
En este tutorial te explico paso a paso cómo crear una plantilla de bloques para un CPT.
La estructura es muy sencilla: utilizas el hook register_post_type_args
y con un condicional controlas dónde se va a aplicar, (en este caso sería tu CPT).
A continuación, agregas los bloques como argumentos: placeholder, content… (necesitas conocer el nombre de los mismos).
Recuerda que, además de crear la plantilla en cuestión, tienes que añadir una línea al final de tu CPT que llame al fichero del block template.
Si el CPT no es tuyo sino de terceros, debes introducirla en functions.php.
3. Momento inception: aprovecha los bloques reutilizables
Para introducir bloques reutilizables (bloques con post_type) en el block template que vas a usar en tu CPT, necesitas crear una variable que contenga una query donde recojas el bloque reutilizable en tu block template.
<?php
/* Template block para las entradas de Los Mundos de Celi */
add_action( 'register_post_type_args', 'cg_post_block_template', 20, 2 );
function cg_post_block_template( $args, $post_type ) {
$block_route_list = new WP_Query(
[
'post_type' => 'wp_block',
'title' => 'lista-ruta',
A continuación lo llamas como core/block e introduces la referencia de la variable.
[ 'core/block', [
'ref' => $block_route_list->posts[0]->ID,
]
],
Y así es como consigues una plantilla de bloques que ya tiene contenido incluido (y editable), como en el ejemplo del blog.
Hablando de edición…
¿Cuánto poder de edición quieres dar a los usuarios de estos block templates?
4. Limita la edición de los block templates a tu gusto
Si no confías demasiado en que el usuario o cliente final que va a usar estas plantillas vaya a hacer buen uso de ellas, puedes «minimizar dramas» usando una de estas dos opciones:
- Evitar que inserte nuevos bloques, pero que sí pueda moverlos.
- O bloquear totalmente la plantilla para que solo puede completar los bloques que tú has determinado.
Te cuento cómo controlar las modificaciones de una plantilla en este tutorial.
Conclusiones
Crear una plantilla de bloques a medida y vincularla a un CPT es una de las formas más elegantes de ponérselo fácil y ahorrar tiempo a tu cliente (y a ti mismo/a).
¿Qué más necesitas para empezar a hacer de Celestina entre los Block Templates y Custom Post Types? 🙂
¿Dudas con el código?
Con la suscripción mensual a Código Genesis tienes la posibilidad de dejar tus dudas, preguntas e incluso peticiones de tutoriales a medida.
¿Sabes cuánto tiempo te puedes ahorrar por solo 19€ al mes? Estás a punto de descubrirlo. 😉
Pase de diapositivas
Encontrarás enlaces a GitHub en la última página del PDF.