Contents
Introducción: qué cubre este artículo
Este artículo explica con todo lujo de detalles cómo registrar estilos de bloque para el editor (Gutenberg) y para el frontend en WordPress, mediante PHP y mediante JavaScript. Incluye métodos modernos (block.json y register_block_type_from_metadata), ejemplos de plugin y tema, buenas prácticas sobre dependencias y versionado, y solución para bloques dinámicos. Los ejemplos de código están incluidos en bloques
preparados para EnlighterJS.Conceptos clave
- Editor vs Frontend: El editor (Gutenberg) necesita estilos específicos para que la vista en el editor refleje la apariencia real el frontend necesita los estilos que verán los visitantes.
- Dos formas principales de registrar estilos:
- Usar block.json y register_block_type_from_metadata o register_block_type con claves style y editor_style.
- Registrar manualmente scripts/estilos con wp_register_style y asociarlos al bloque (o encolarlos desde render_callback para bloques dinámicos).
- Build tools: Si usas un bundler (webpack, @wordpress/scripts), normalmente importas los .scss/.css en JS y el bundler genera style/editor.css y index.js junto con index.asset.php que contiene dependencias y versión.
- register_block_style / registerBlockStyle: sirven para registrar variaciones de estilo (p. ej. rounded, outline) que aparecen como opciones en la barra lateral del bloque y aplican clases que deben tener estilos tanto para editor como para frontend.
Enfoque recomendado: usar block.json register_block_type_from_metadata
WordPress permite declarar metadatos del bloque en un archivo block.json. Para estilos se usan las claves style y editorStyle. Con register_block_type_from_metadata (o register_block_type con la ruta), WordPress enlaza automáticamente los handles especificados.
block.json: ejemplo mínimo
{ apiVersion: 2, name: mi-plugin/mi-bloque, version: 1.0.0, title: Mi Bloque, category: widgets, editorScript: file:./build/index.js, script: file:./build/frontend.js, style: file:./build/style.css, editorStyle: file:./build/editor.css }
Con este block.json, al llamar register_block_type_from_metadata( __DIR__ ) WordPress leerá los campos y registrará los handles necesarios si existen los ficheros en la ruta indicada.
Registro en PHP usando register_block_type_from_metadata
Este enfoque es el más limpio cuando usas create-block o un build que genera build/index.js, build/style.css y build/editor.css.
Registro manual en PHP: control total sobre handles y dependencias
Si no usas block.json o quieres mayor control sobre cómo se registran los estilos, registra scripts y estilos manualmente y asigna las keys a register_block_type.
Estructura de ejemplo (plugin)
- mi-plugin/
- build/index.js
- build/editor.css
- build/style.css
- src/block.php
Registro manual completo (PHP)
mi-bloque-editor-js, editor_style => mi-bloque-editor-css, style => mi-bloque-frontend-css, ) ) } add_action( init, mi_bloque_registrar_assets )
Al usar las claves editor_style y style, WordPress encolará los estilos correspondientes solamente donde proceda: editor o frontend. Si el bloque es usado en el frontend, el CSS indicado en style se imprimirá automáticamente.
Bloque dinámico con estilos enqueueados bajo demanda
Para bloques con render_callback (PHP rendering), quizá quieras encolar el CSS solo cuando el bloque realmente se renderiza en la página. En ese caso, encolamos el estilo desde la función de renderizado.
Contenido del bloque