Ejemplos
Código mínimo y comentado
Tres ejemplos para ver la jerarquía de decisión en acción.
1 · theme.json: color de marca sin escribir CSS
En el desarrollo clásico se escribiría .btn-primary { background-color: #ff5722; } en style.css. En un tema de bloques se declara en theme.json.
theme.json
{
"$schema": "https://schemas.wp.org/trunk/theme.json",
"version": 3,
"settings": {
"color": {
"palette": [
{ "slug": "primary", "color": "#ff5722", "name": "Naranja marca" }
]
}
},
"styles": {
"blocks": {
"core/button": {
"color": {
"background": "var(--wp--preset--color--primary)",
"text": "#ffffff"
},
"border": { "radius": "8px" }
}
}
}
}
Variables automáticas
WordPress genera --wp--preset--color--primary sin que escribas CSS.
Visible en el editor
El color aparece en el panel para aplicarlo a otros bloques.
Legible para la IA
Un agente lee el JSON y aplica la paleta con coherencia.
2 · Interactivity API: un contador sin jQuery
La interactividad se declara en el HTML con directivas (data-wp-*) y el comportamiento vive en un módulo JavaScript asociado al bloque.
render.php
<div
<?php echo get_block_wrapper_attributes(); ?>
data-wp-interactive="miContador"
<?php echo wp_interactivity_data_wp_context( array( 'cuenta' => 0 ) ); ?>
>
<p>Has hecho clic <span data-wp-text="context.cuenta">0</span> veces.</p>
<button data-wp-on--click="actions.incrementar">Sumar +1</button>
</div>
view.js
import { store, getContext } from '@wordpress/interactivity';
store( 'miContador', {
actions: {
incrementar: () => {
const context = getContext();
context.cuenta += 1;
},
},
} );
block.json
{
"apiVersion": 3,
"name": "demo/contador",
"title": "Contador",
"category": "widgets",
"supports": { "interactivity": true },
"render": "file:./render.php",
"viewScriptModule": "file:./view.js"
}
Matiz de caché. El HTML del bloque sigue siendo cacheable, pero cualquier dato que dependa del usuario (carrito, sesión) debe tratarse aparte y no cachearse como si fuera común.
3 · Entorno efímero con wp-env
Un entorno efímero elimina el «en mi máquina funciona»: se crea, se prueba y se destruye. Fija las versiones a las que use el proyecto.
wp-env.json
{
"core": "WordPress/WordPress",
"phpVersion": "8.2",
"plugins": [ "." ],
"port": 8888
}
npx wp-env start lo arranca y npx wp-env destroy lo elimina. WordPress Playground es la alternativa sin Docker; comprueba el nombre vigente de su herramienta de línea de comandos antes de impartir.