{"id":69790,"date":"2023-09-04T16:13:42","date_gmt":"2023-09-04T14:13:42","guid":{"rendered":"https:\/\/kinsta.com\/es\/?p=69790&#038;preview=true&#038;preview_id=69790"},"modified":"2023-09-11T10:00:28","modified_gmt":"2023-09-11T08:00:28","slug":"plantillas-de-bloques-wordpress","status":"publish","type":"post","link":"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/","title":{"rendered":"C\u00f3mo Crear Plantillas de Bloques de WordPress"},"content":{"rendered":"<p>En la era <a href=\"https:\/\/kinsta.com\/es\/blog\/gutenberg-wordpress-editor\/\">Gutenberg<\/a>, el proceso de dise\u00f1o no est\u00e1 estrictamente ligado a los <a href=\"https:\/\/kinsta.com\/es\/blog\/temas-wordpress-rapidos\/\">temas de WordPress<\/a>. Desde el principio, el CMS proporciona a los usuarios todas las herramientas de dise\u00f1o que necesitan para construir un excelente sitio web y el tema pretende ser algo que a\u00f1ade a\u00fan m\u00e1s herramientas de construcci\u00f3n y dise\u00f1o.<\/p>\n<p>Las plantillas de bloques son una caracter\u00edstica que aumenta a\u00fan m\u00e1s las posibilidades de creaci\u00f3n de sitios. Seg\u00fan el <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/block-api\/block-templates\/\" target=\"_blank\" rel=\"noopener noreferrer\">Manual del Editor de Bloques<\/a>:<\/p>\n<blockquote><p><em>Una plantilla de bloque se define como una lista de elementos de bloque. Estos bloques pueden tener atributos predefinidos, contenido de marcador de posici\u00f3n y ser est\u00e1ticos o din\u00e1micos. Las plantillas de bloques permiten especificar un estado inicial predeterminado para una sesi\u00f3n del editor.<\/em><\/p><\/blockquote>\n<p>En otras palabras, las plantillas de bloques son colecciones preconstruidas de bloques que se utilizan para establecer un estado predeterminado de forma din\u00e1mica en el cliente.<\/p>\n<p><strong>\ud83d\udc49 Las plantillas de Bloques son diferentes de los archivos de Plantilla.<\/strong><\/p>\n<p>Los archivos de plantilla son archivos PHP como <strong>index.php<\/strong>, <strong>page.php<\/strong> y <strong>single.php<\/strong>, y funcionan de la misma manera tanto con los temas cl\u00e1sicos como con los de bloque, seg\u00fan la <a href=\"https:\/\/kinsta.com\/es\/blog\/wordpress-jerarquia-plantillas\/\">jerarqu\u00eda de plantillas de WordPress<\/a>. En los temas cl\u00e1sicos, estos archivos est\u00e1n escritos en PHP y HTML. En los temas de bloques, est\u00e1n formados \u00edntegramente por bloques.<\/p>\n<p><strong>\ud83d\udc49 Las plantillas de Bloques son diferentes de los patrones de Bloques.<\/strong><\/p>\n<p>Los <a href=\"https:\/\/kinsta.com\/es\/blog\/patrones-de-bloques-wordpress\/\">patrones de bloques<\/a> deben a\u00f1adirse manualmente a tus p\u00e1ginas, mientras que las plantillas de bloques proporcionan autom\u00e1ticamente el dise\u00f1o inicial y los valores predeterminados cuando t\u00fa o los miembros de tu equipo cre\u00e1is una nueva entrada.<\/p>\n<p>Tambi\u00e9n puedes vincular plantillas de bloques espec\u00edficas a tus tipos de entrada personalizados y bloquear algunos bloques o funciones para obligar a los usuarios a utilizar tus valores predeterminados o evitar errores.<\/p>\n<p>Tienes un par de formas de crear plantillas de bloques. Puedes <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/block-api\/block-templates\/\" target=\"_blank\" rel=\"noopener noreferrer\">utilizar la API de bloques<\/a> para declarar un array de tipos de bloque mediante PHP, o puedes crear un tipo de bloque personalizado utilizando el componente <code>InnerBlocks<\/code>.<\/p>\n<p>\u00a1Vamos a sumergirnos!<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>C\u00f3mo Crear una Plantilla de Bloques con PHP<\/h2>\n<p>Si eres un desarrollador de la vieja escuela, puedes definir una plantilla de bloque personalizada utilizando un plugin o el archivo <a href=\"https:\/\/kinsta.com\/es\/blog\/functions-php-wordpress\/\">functions.php<\/a> de tu tema. Si te decides por un plugin, inicia tu <a href=\"https:\/\/kinsta.com\/es\/blog\/php-editor\/\">editor de c\u00f3digo<\/a> favorito, crea un nuevo archivo PHP y a\u00f1ade el siguiente c\u00f3digo:<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\/*\n * Plugin Name:       My Block Templates\n * Plugin URI:        https:\/\/example.com\/\n * Description:       An example plugin\n * Version:           1.0\n * Requires at least: 5.5\n * Requires PHP:      8.0\n * Author:            Your name\n * Author URI:        https:\/\/author.example.com\/\n * License:           GPL v2 or later\n * License URI:       https:\/\/www.gnu.org\/licenses\/gpl-2.0.html\n * Update URI:        https:\/\/example.com\/my-plugin\/\n *\/\n\nfunction myplugin_register_my_block_template() {\n\t$post_type_object = get_post_type_object( 'post' );\n\t$post_type_object-&gt;template = array(\n\t\tarray( 'core\/image' ),\n\t\tarray( 'core\/heading' ),\n\t\tarray( 'core\/paragraph' )\n\t);\n}\nadd_action( 'init', 'myplugin_register_my_block_template' );<\/code><\/pre>\n<p>En el c\u00f3digo anterior <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_post_type_object\/\" target=\"_blank\" rel=\"noopener noreferrer\"><code>get_post_type_object<\/code><\/a> recupera un tipo de entrada por su nombre.<\/p>\n<p>Guarda tu archivo en la carpeta <strong>wp-content\/plugins<\/strong>, ve a la pantalla Plugins de tu <a href=\"https:\/\/kinsta.com\/es\/blog\/panel-control-administracion-wordpress\/\">panel de control de WordPress<\/a> y activa el plugin <strong>Mis Plantillas de Bloque<\/strong>.<\/p>\n<p>Ahora, cuando crees una nueva entrada, el editor lanzar\u00e1 autom\u00e1ticamente tu plantilla de bloque con un bloque de imagen, un encabezado y un p\u00e1rrafo.<\/p>\n<figure id=\"attachment_161425\" aria-describedby=\"caption-attachment-161425\" style=\"width: 1984px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-161425 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/block-template.jpg\" alt=\"Una plantilla de bloques cargada autom\u00e1ticamente en el editor de entradas\" width=\"1984\" height=\"1220\"><figcaption id=\"caption-attachment-161425\" class=\"wp-caption-text\">Una plantilla de bloques cargada autom\u00e1ticamente en el editor de entradas<\/figcaption><\/figure>\n<p>Tambi\u00e9n puedes a\u00f1adir un array de ajustes para cada bloque y tambi\u00e9n crear estructuras anidadas de bloques. La siguiente funci\u00f3n construye una plantilla de bloques m\u00e1s avanzada con bloques internos y ajustes:<\/p>\n<pre><code class=\"language-php\">function myplugin_register_my_block_template() {\n\n\t$block_template = array(\n\t\tarray( 'core\/image' ),\n\t\tarray( 'core\/heading', array(\n\t\t\t'placeholder'\t=&gt; 'Add H2...',\n\t\t\t'level'\t\t\t=&gt; 2\n\t\t) ),\n\t\tarray( 'core\/paragraph', array(\n\t\t\t'placeholder'\t=&gt; 'Add paragraph...'\n\t\t\t\n\t\t) ),\n\t\tarray( 'core\/columns', \n\t\t\tarray(), \n\t\t\tarray( \n\t\t\t\tarray( 'core\/column',\n\t\t\t\t\tarray(),\n\t\t\t\t\tarray(\n\t\t\t\t\t\tarray( 'core\/image' )\n\t\t\t\t\t)\n\t\t\t\t), \n\t\t\t\tarray( 'core\/column',\n\t\t\t\t\tarray(),\n\t\t\t\t\tarray(\n\t\t\t\t\t\tarray( 'core\/heading', array(\n\t\t\t\t\t\t\t'placeholder'\t=&gt; 'Add H3...',\n\t\t\t\t\t\t\t'level'\t\t\t=&gt; 3\n\t\t\t\t\t\t) ),\n\t\t\t\t\t\tarray( 'core\/paragraph', array(\n\t\t\t\t\t\t\t'placeholder'\t=&gt; 'Add paragraph...'\n\t\t\t\t\t\t) )\n\t\t\t\t\t) \n\t\t\t\t)\n\t\t\t) \n\t\t)\n\t);\n\t$post_type_object = get_post_type_object( 'post' );\n\t$post_type_object-&gt;template = $block_template;\n}\nadd_action( 'init', 'myplugin_register_my_block_template' );<\/code><\/pre>\n<p>Puedes ver el resultado del c\u00f3digo anterior en la siguiente imagen:<\/p>\n<figure id=\"attachment_161426\" aria-describedby=\"caption-attachment-161426\" style=\"width: 2124px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-161426 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/block-template-2.jpg\" alt=\"Una plantilla de bloques m\u00e1s avanzada\" width=\"2124\" height=\"1432\"><figcaption id=\"caption-attachment-161426\" class=\"wp-caption-text\">Una plantilla de bloques m\u00e1s avanzada<\/figcaption><\/figure>\n<p>Hasta ahora, s\u00f3lo hemos utilizado bloques b\u00e1sicos. Pero tambi\u00e9n puedes incluir <a href=\"https:\/\/kinsta.com\/es\/blog\/bloques-gutenberg\/\">bloques personalizados<\/a> o <a href=\"https:\/\/kinsta.com\/es\/blog\/patrones-de-bloques-wordpress\/\">patrones de bloques<\/a> en tus plantillas de bloques, como se muestra en el siguiente ejemplo:<\/p>\n<pre><code class=\"language-php\">function myplugin_register_my_block_template() {\n\t$post_type_object = get_post_type_object( 'page' );\n\t$post_type_object-&gt;template = array(\n\t\tarray( 'core\/pattern', array(\n\t\t\t'slug' =&gt; 'my-plugin\/my-block-pattern'\n\t\t) ) \n\t);\n}\nadd_action( 'init', 'myplugin_register_my_block_template' );<\/code><\/pre>\n<p>No hay mucha diferencia en caso de que decidas crear una plantilla de bloque predeterminada para un tipo de entrada personalizado ya registrado. Simplemente cambia el tipo de entrada de <code>get_post_type_object<\/code> por el nombre de tu tipo de entrada personalizado, como se muestra en el siguiente ejemplo:<\/p>\n<pre><code class=\"language-php\">&lt;?php\nfunction myplugin_register_my_block_template() {\n\t$post_type_object = get_post_type_object( 'book' );\n\t$post_type_object-&gt;template = array(\n\t\tarray( 'core\/image' ),\n\t\tarray( 'core\/heading' ),\n\t\tarray( 'core\/paragraph' )\n\t);\n}\nadd_action( 'init', 'myplugin_register_my_block_template' );<\/code><\/pre>\n<p>Ahora que ya sabes c\u00f3mo crear plantillas de bloque, podemos avanzar y explorar m\u00e1s casos de uso. Profundicemos un poco m\u00e1s.<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"decimal\" selector=\"h3\" count-number=\"5\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3>Plantillas de Bloque con Tipos de Entrada Personalizados<\/h3>\n<p>Como hemos mencionado antes, puedes adjuntar una plantilla de bloque a un tipo de entrada personalizado. Puedes hacerlo despu\u00e9s de que tu tipo de entrada personalizado ya haya sido registrado, pero puede que prefieras definir una plantilla de bloque al <a href=\"https:\/\/kinsta.com\/es\/blog\/wordpress-tipos-de-postes-personalizados\/\">registrar el tipo de entrada personalizado<\/a>.<\/p>\n<p>En este caso, puedes utilizar los argumentos <code>template<\/code> y <code>template_lock<\/code> de la funci\u00f3n <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_post_type\/\" target=\"_blank\" rel=\"noopener noreferrer\"><code>register_post_type<\/code>:<\/a><\/p>\n<pre><code class=\"language-php\">function myplugin_register_book_post_type() {\n\t$args = array(\n\t\t'label' =&gt; esc_html__( 'Books' ),\n\t\t'labels' =&gt; array(\n\t\t\t'name' =&gt; esc_html__( 'Books' ),\n\t\t\t'singular_name' =&gt; esc_html__( 'Book' ),\n\t\t),\n\t\t'public' =&gt; true,\n\t\t'publicly_queryable' =&gt; true,\n\t\t'show_ui' =&gt; true,\n\t\t'show_in_rest' =&gt; true,\n\t\t'rest_namespace' =&gt; 'wp\/v2',\n\t\t'has_archive' =&gt; true,\n\t\t'show_in_menu' =&gt; true,\n\t\t'show_in_nav_menus' =&gt; true,\n\t\t'supports' =&gt; array( 'title', 'editor', 'thumbnail' ),\n\t\t'template' =&gt; array(\n\t\t\tarray( 'core\/paragraph', array(\n\t\t\t\t'placeholder'\t=&gt; 'Add paragraph...'\n\t\t\t) ),\n\t\t\tarray( 'core\/columns', \n\t\t\t\tarray(), \n\t\t\t\tarray( \n\t\t\t\t\tarray( 'core\/column',\n\t\t\t\t\t\tarray(),\n\t\t\t\t\t\tarray(\n\t\t\t\t\t\t\tarray( 'core\/image' )\n\t\t\t\t\t\t)\n\t\t\t\t\t), \n\t\t\t\t\tarray( 'core\/column',\n\t\t\t\t\t\tarray(),\n\t\t\t\t\t\tarray(\n\t\t\t\t\t\t\tarray( 'core\/heading', array(\n\t\t\t\t\t\t\t\t'placeholder'\t=&gt; 'Add H3...',\n\t\t\t\t\t\t\t\t'level'\t\t\t=&gt; 3\n\t\t\t\t\t\t\t) ),\n\t\t\t\t\t\t\tarray( 'core\/paragraph', array(\n\t\t\t\t\t\t\t\t'placeholder'\t=&gt; 'Add paragraph...'\n\t\t\t\t\t\t\t) )\n\t\t\t\t\t\t) \n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t)\n\t\t)\n\t);\n\tregister_post_type( 'book', $args );\n}\nadd_action( 'init', 'myplugin_register_book_post_type' );<\/code><\/pre>\n<p>Y ya est\u00e1. La imagen siguiente muestra la plantilla de bloque en la interfaz del editor para un tipo de entrada personalizado Libro.<\/p>\n<figure id=\"attachment_161428\" aria-describedby=\"caption-attachment-161428\" style=\"width: 2124px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-161428 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/cpt-block-template.jpg\" alt=\"Una plantilla de bloque para un tipo de entrada personalizado\" width=\"2124\" height=\"1038\"><figcaption id=\"caption-attachment-161428\" class=\"wp-caption-text\">Una plantilla de bloque para un tipo de entrada personalizado<\/figcaption><\/figure>\n<p>Cuando hayas terminado con el dise\u00f1o, es posible que quieras jugar con la configuraci\u00f3n de bloques para ajustar el comportamiento y la apariencia de tu plantilla de bloques.<\/p>\n<h3>Ajustar la Plantilla de Bloque con Atributos de Bloque<\/h3>\n<p>Hemos definido una plantilla de bloques como una lista de bloques. Cada elemento de la lista debe ser un array que contenga el nombre del bloque y un array de atributos opcionales. Con los arrays anidados, puede que quieras a\u00f1adir un tercer array para los bloques hijos.<\/p>\n<p>Una plantilla con un bloque Columnas puede representarse como sigue:<\/p>\n<pre><code class=\"language-php\">$template = array( 'core\/columns', \n\t\/\/ attributes\n\tarray(), \n\t\/\/ nested blocks\n\tarray(\n\t\tarray( 'core\/column' ),\n\t\tarray( 'core\/column' ) \n\t) \n);<\/code><\/pre>\n<p>Como ya se ha mencionado, el segundo array de la lista es un array opcional de atributos de bloque. Estos atributos te permiten personalizar la apariencia de tu plantilla para que t\u00fa o tus usuarios pod\u00e1is centraros en el contenido de la entrada sin preocuparos de la disposici\u00f3n y el dise\u00f1o de la p\u00e1gina.<\/p>\n<p>Para empezar, puedes utilizar el editor de bloques para crear una estructura de bloques que puedas utilizar como referencia para tu plantilla.<\/p>\n<figure id=\"attachment_161769\" aria-describedby=\"caption-attachment-161769\" style=\"width: 2118px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-161769 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/a-block-layout.jpg\" alt=\"Un dise\u00f1o de bloques en el editor de bloques\" width=\"2118\" height=\"1066\"><figcaption id=\"caption-attachment-161769\" class=\"wp-caption-text\">Un dise\u00f1o de bloques en el editor de bloques<\/figcaption><\/figure>\n<p>A\u00f1ade tus bloques, personaliza la disposici\u00f3n y los estilos, luego pasa al editor de c\u00f3digo y busca delimitadores de bloque.<\/p>\n<figure id=\"attachment_161770\" aria-describedby=\"caption-attachment-161770\" style=\"width: 2042px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-161770 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/block-delimiter.jpg\" alt=\"El delimitador de bloque de un bloque Columnas\" width=\"2042\" height=\"248\"><figcaption id=\"caption-attachment-161770\" class=\"wp-caption-text\">El delimitador de bloque de un bloque Columnas<\/figcaption><\/figure>\n<p>Los delimitadores de bloque almacenan los ajustes y estilos del bloque en pares clave\/valor. Puedes simplemente copiar y pegar claves y valores del marcado de bloque para rellenar tu array de atributos:<\/p>\n<pre><code class=\"language-php\">$template = array( 'core\/columns', \n\tarray(\n\t\t'verticalAlignment'\t=&gt; 'center',\n\t\t'align'\t\t\t\t=&gt; 'wide',\n\t\t'style'\t\t\t\t=&gt; array( \n\t\t\t'border'\t=&gt; array(\n\t\t\t\t'width'\t=&gt; '2px',\n\t\t\t\t'radius'\t=&gt; array(\n\t\t\t\t\t'topLeft'\t\t=&gt; '12px', \n\t\t\t\t\t'topRight'\t\t=&gt; '12px', \n\t\t\t\t\t'bottomLeft'\t=&gt; '12px', \n\t\t\t\t\t'bottomRight'\t=&gt; '12px'\n\t\t\t\t)\n\t\t\t)\n\t\t),\n\t\t'backgroundColor' =&gt; 'tertiary'\n\t),\n\tarray(\n\t\tarray( 'core\/column' ),\n\t\tarray( 'core\/column' ) \n\t) \n);<\/code><\/pre>\n<p>Repite el proceso para cada bloque de la plantilla y ya est\u00e1.<\/p>\n<pre><code class=\"language-php\">$template = array(\n\tarray( 'core\/paragraph', array(\n\t\t'placeholder'\t=&gt; 'Add paragraph...'\n\t) ),\n\tarray( 'core\/columns', \n\t\tarray(\n\t\t\t'verticalAlignment'\t=&gt; 'center',\n\t\t\t'align'\t\t\t\t=&gt; 'wide',\n\t\t\t'style'\t\t\t\t=&gt; array( \n\t\t\t\t'border'\t=&gt; array(\n\t\t\t\t\t'width'\t\t=&gt; '2px',\n\t\t\t\t\t'radius'\t=&gt; array(\n\t\t\t\t\t\t'topLeft'\t\t=&gt; '12px', \n\t\t\t\t\t\t'topRight'\t\t=&gt; '12px', \n\t\t\t\t\t\t'bottomLeft'\t=&gt; '12px', \n\t\t\t\t\t\t'bottomRight'\t=&gt; '12px'\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t),\n\t\t\t'backgroundColor' =&gt; 'tertiary',\n\t\t\t'lock' =&gt; array(\n\t\t\t\t'remove'\t=&gt; true,\n\t\t\t\t'move'\t\t=&gt; true\n\t\t\t)\n\t\t), \n\t\tarray( \n\t\t\tarray( 'core\/column',\n\t\t\t\tarray( 'verticalAlignment'\t=&gt; 'center' ),\n\t\t\t\tarray(\n\t\t\t\t\tarray( 'core\/image', \n\t\t\t\t\t\tarray(\n\t\t\t\t\t\t\t'style'\t=&gt; array( 'border' =&gt; array( 'radius' =&gt; '8px' ) ) \n\t\t\t\t\t\t) \n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t), \n\t\t\tarray( 'core\/column',\n\t\t\t\tarray( 'verticalAlignment'\t=&gt; 'center' ),\n\t\t\t\tarray(\n\t\t\t\t\tarray( 'core\/heading', array(\n\t\t\t\t\t\t'placeholder'\t=&gt; 'Add H3...',\n\t\t\t\t\t\t'level'\t\t\t=&gt; 3\n\t\t\t\t\t) ),\n\t\t\t\t\tarray( 'core\/paragraph', array(\n\t\t\t\t\t\t'placeholder'\t=&gt; 'Add paragraph...'\n\t\t\t\t\t) )\n\t\t\t\t) \n\t\t\t)\n\t\t)\n\t)\n);<\/code><\/pre>\n<h3>Bloquear Bloques<\/h3>\n<p>Puedes bloquear bloques espec\u00edficos o todos los bloques incluidos en tu plantilla utilizando la propiedad <code>template_lock<\/code> de la p\u00e1gina <code>$post_type_object<\/code>.<\/p>\n<p>Bloquear plantillas puede ser muy \u00fatil cuando tienes un blog con varios autores y quieres evitar que todos o determinados usuarios cambien el dise\u00f1o de tu plantilla de bloques.<\/p>\n<p>En el siguiente ejemplo, estamos bloqueando todos los bloques de la plantilla de bloques:<\/p>\n<pre><code class=\"language-php\">function myplugin_register_my_block_template() {\n\t$post_type_object = get_post_type_object( 'post' );\n\t$post_type_object-&gt;template = array(\n\t\tarray( 'core\/image' ),\n\t\tarray( 'core\/heading' ),\n\t\tarray( 'core\/paragraph' )\n\t);\n\t$post_type_object-&gt;template_lock = 'all';\n}\nadd_action( 'init', 'myplugin_register_my_block_template' );<\/code><\/pre>\n<p>Los bloques bloqueados muestran un icono de candado en la barra de herramientas de bloques y en la vista de lista:<\/p>\n<figure id=\"attachment_161430\" aria-describedby=\"caption-attachment-161430\" style=\"width: 1798px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-161430 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/locked-block.jpg\" alt=\"Un bloque de encabezamiento bloqueado\" width=\"1798\" height=\"1050\"><figcaption id=\"caption-attachment-161430\" class=\"wp-caption-text\">Un bloque de encabezamiento bloqueado<\/figcaption><\/figure>\n<p>Los usuarios pueden desbloquear bloques desde el men\u00fa Opciones disponible en la barra de herramientas de bloques.<\/p>\n<figure id=\"attachment_161431\" aria-describedby=\"caption-attachment-161431\" style=\"width: 1368px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-161431 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/unlock-block.jpg\" alt=\"Desbloqueando un bloque\" width=\"1368\" height=\"1120\"><figcaption id=\"caption-attachment-161431\" class=\"wp-caption-text\">Desbloqueando un bloque<\/figcaption><\/figure>\n<p>Al hacer clic en <strong>Desbloquear<\/strong>, una ventana emergente modal te permite activar\/desactivar el movimiento, impedir la eliminaci\u00f3n, o ambas cosas:<\/p>\n<figure id=\"attachment_161433\" aria-describedby=\"caption-attachment-161433\" style=\"width: 1368px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-161433 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/unlock-block-2.jpg\" alt=\"Opciones de bloqueo\" width=\"1368\" height=\"1120\"><figcaption id=\"caption-attachment-161433\" class=\"wp-caption-text\">Opciones de bloqueo<\/figcaption><\/figure>\n<p><code>template_lock<\/code> puede tomar uno de los <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/block-api\/block-templates\/#locking\" target=\"_blank\" rel=\"noopener noreferrer\">siguientes valores<\/a>:<\/p>\n<ul>\n<li><code>all<\/code> \u2014 Impide a los usuarios a\u00f1adir nuevos bloques, mover y eliminar bloques existentes<\/li>\n<li><code>insert<\/code> \u2014 Impide a los usuarios a\u00f1adir nuevos bloques y eliminar bloques existentes<\/li>\n<li><code>contentOnly<\/code> \u2014 Los usuarios s\u00f3lo pueden editar el contenido de los bloques incluidos en la plantilla. Ten en cuenta que <code>contentOnly<\/code> s\u00f3lo puede utilizarse a nivel de patr\u00f3n o plantilla y debe gestionarse con c\u00f3digo. (Ver tambi\u00e9n <a href=\"https:\/\/developer.wordpress.org\/block-editor\/how-to-guides\/curating-the-editor-experience\/#locking-apis\" target=\"_blank\" rel=\"noopener noreferrer\">Bloquear APIs<\/a>).<\/li>\n<\/ul>\n<figure id=\"attachment_161435\" aria-describedby=\"caption-attachment-161435\" style=\"width: 2370px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-161435 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/prevent-removal.jpg\" alt=\"Configuraci\u00f3n de template_lock para evitar que se eliminen bloques de la plantilla\" width=\"2370\" height=\"1410\"><figcaption id=\"caption-attachment-161435\" class=\"wp-caption-text\">Configuraci\u00f3n de template_lock para evitar que se eliminen bloques de la plantilla<\/figcaption><\/figure>\n<p>Si quieres bloquear bloques espec\u00edficos, puedes utilizar el atributo <code>lock<\/code> en cada bloque:<\/p>\n<pre><code class=\"language-php\">function myplugin_register_my_block_template() {\n\t$post_type_object = get_post_type_object( 'post' );\n\t$post_type_object-&gt;template = array(\n\t\tarray( 'core\/image' ),\n\t\tarray( 'core\/heading' ),\n\t\tarray( 'core\/paragraph', array(\n\t\t\t'lock' =&gt; array(\n\t\t\t\t'remove'\t=&gt; true,\n\t\t\t\t'move'\t\t=&gt; true\n\t\t\t)\n\t\t) )\n\t);\n}\nadd_action( 'init', 'myplugin_register_my_block_template' );<\/code><\/pre>\n<p>El atributo <code>lock<\/code> puede tomar uno de los <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/block-api\/block-templates\/#individual-block-locking\" target=\"_blank\" rel=\"noopener noreferrer\">siguientes valores<\/a>:<\/p>\n<ul>\n<li><code>remove<\/code>: Impide que los usuarios eliminen un bloque.<\/li>\n<li><code>move<\/code>: Evita que los usuarios muevan un bloque.<\/li>\n<\/ul>\n<p>Tambi\u00e9n puedes utilizar <code>lock<\/code> junto con <code>template_lock<\/code> para ajustar el comportamiento de los bloques incluidos en tu plantilla de bloques. En el siguiente ejemplo, estamos bloqueando todos los bloques excepto el encabezado:<\/p>\n<pre><code class=\"language-php\">function myplugin_register_my_block_template() {\n\t$post_type_object = get_post_type_object( 'post' );\n\t$post_type_object-&gt;template = array(\n\t\tarray( 'core\/image' ),\n\t\tarray( 'core\/heading', array(\n\t\t\t'lock' =&gt; array(\n\t\t\t\t'remove'\t=&gt; false,\n\t\t\t\t'move'\t\t=&gt; false\n\t\t\t) \n\t\t) ),\n\t\tarray( 'core\/paragraph' )\n\t);\n\t$post_type_object-&gt;template_lock = 'all';\n}\nadd_action( 'init', 'myplugin_register_my_block_template' );<\/code><\/pre>\n<p>La imagen siguiente muestra la plantilla de bloques con los bloques bloqueados y desbloqueados:<\/p>\n<figure id=\"attachment_161437\" aria-describedby=\"caption-attachment-161437\" style=\"width: 1800px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-161437 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/unlocked-heading.jpg\" alt=\"Una plantilla de bloques con bloques bloqueados y desbloqueados\" width=\"1800\" height=\"1080\"><figcaption id=\"caption-attachment-161437\" class=\"wp-caption-text\">Una plantilla de bloques con bloques bloqueados y desbloqueados<\/figcaption><\/figure>\n<p>Los desarrolladores de bloques tambi\u00e9n pueden utilizar el atributo <code>lock<\/code> en la definici\u00f3n del bloque en el nivel <code>attributes<\/code> (consulta tambi\u00e9n <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/block-api\/block-templates\/#individual-block-locking\" target=\"_blank\" rel=\"noopener noreferrer\">Bloqueo individual de bloques<\/a>).<\/p>\n<h3>Evitar que los Usuarios Desbloqueen Bloques<\/h3>\n<p>Si has probado el c\u00f3digo comentado hasta ahora en el art\u00edculo, te habr\u00e1s dado cuenta de que puedes desbloquear los bloques incluidos en tu plantilla (o cualquier otro bloque) desde la interfaz del editor. Por defecto, todos los usuarios con acceso de edici\u00f3n pueden bloquear o desbloquear bloques, y al hacerlo se saltan la configuraci\u00f3n de tu plantilla.<\/p>\n<p>Puedes controlar si los bloques pueden bloquearse o desbloquearse utilizando el filtro <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/filters\/editor-filters\/#block_editor_settings_all\" target=\"_blank\" rel=\"noopener noreferrer\"><code>block_editor_settings_all<\/code><\/a>.<\/p>\n<blockquote><p><em>El filtro enviar\u00e1 cualquier configuraci\u00f3n al editor inicializado, lo que significa que cualquier configuraci\u00f3n del editor que se utilice para configurar el editor en la inicializaci\u00f3n puede ser filtrada por un plugin PHP WordPress antes de ser enviada.<\/em><\/p><\/blockquote>\n<p>La funci\u00f3n callback que utilizar\u00e1s con este filtro toma dos par\u00e1metros:<\/p>\n<ul>\n<li><code>$settings<\/code>: Un array de ajustes del editor.<\/li>\n<li><code>$context<\/code>: Una instancia de la clase <a href=\"https:\/\/developer.wordpress.org\/reference\/classes\/wp_block_editor_context\/\" target=\"_blank\" rel=\"noopener noreferrer\"><code>WP_Block_Editor_Context<\/code><\/a>, un objeto que contiene informaci\u00f3n sobre el editor de bloques que se est\u00e1 representando.<\/li>\n<\/ul>\n<p>Lo que tienes que hacer es filtrar <code>$settings['canLockBlocks']<\/code> poni\u00e9ndolo a <code>true<\/code> o <code>false<\/code> como se muestra en el siguiente ejemplo:<\/p>\n<pre><code class=\"language-php\">add_filter( 'block_editor_settings_all', \n\tfunction( $settings, $context ) {\n\t\tif ( $context-&gt;post && 'book' === $context-&gt;post-&gt;post_type ) {\n\t\t\t$settings['canLockBlocks'] = false;\n\t\t}\n\t\treturn $settings;\n\t}, 10, 2\n);<\/code><\/pre>\n<p>Puedes excluir determinados roles de usuario del bloqueo\/desbloqueo de bloques ejecutando una comprobaci\u00f3n condicional de las actuales <a href=\"https:\/\/kinsta.com\/es\/blog\/roles-de-usuario\/\">capacidades\u00a0del usuario<\/a>.<\/p>\n<p>En el siguiente ejemplo, estamos comprobando si el <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/current_user_can\/\" target=\"_blank\" rel=\"noopener noreferrer\">usuario actual puede<\/a> editar los mensajes de otros (en otras palabras, si el rol de usuario actual es Editor o superior):<\/p>\n<pre><code class=\"language-php\">add_filter( 'block_editor_settings_all', \n\tfunction( $settings, $context ) {\n\t\tif ( $context-&gt;post && 'book' === $context-&gt;post-&gt;post_type ) {\n\t\t\t$settings['canLockBlocks'] = current_user_can( 'edit_others_posts' );\n\t\t}\n\t\treturn $settings;\n\t}, 10, 2\n);<\/code><\/pre>\n<p>Las siguientes im\u00e1genes comparan el estado inicial del editor para un Admin y un Autor. En primer lugar, Admin:<\/p>\n<figure id=\"attachment_161440\" aria-describedby=\"caption-attachment-161440\" style=\"width: 2124px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-161440 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/initial-state-for-admin.jpg\" alt=\"Estado inicial del editor para un usuario Admin\" width=\"2124\" height=\"1388\"><figcaption id=\"caption-attachment-161440\" class=\"wp-caption-text\">Estado inicial del editor para un usuario Admin<\/figcaption><\/figure>\n<p>Ahora, Autor:<\/p>\n<figure id=\"attachment_161442\" aria-describedby=\"caption-attachment-161442\" style=\"width: 2126px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-161442 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/initial-state-for-author.jpg\" alt=\"Estado inicial del editor para un Autor\" width=\"2126\" height=\"1378\"><figcaption id=\"caption-attachment-161442\" class=\"wp-caption-text\">Estado inicial del editor para un Autor<\/figcaption><\/figure>\n<p>Y puedes comprobar cualquier condici\u00f3n del usuario actual. En el siguiente ejemplo, estamos <a href=\"https:\/\/make.wordpress.org\/core\/2022\/05\/05\/block-locking-settings-in-wordpress-6-0\/\">impidiendo que un usuario concreto<\/a> bloquee\/desbloquee bloques:<\/p>\n<pre><code class=\"language-php\">add_filter( 'block_editor_settings_all', \n\tfunction( $settings, $context ) {\n\t\t$user = wp_get_current_user();\n\t\tif ( in_array( $user-&gt;user_email, [ 'email@example.com' ], true ) ) {\n\t\t\t$settings['canLockBlocks'] = false;\n\t\t}\n\t\treturn $settings;\n\t}, 10, 2\n);<\/code><\/pre>\n<p>Puedes combinar m\u00e1s condiciones para tener un control granular sobre qui\u00e9n puede bloquear\/desbloquear bloques en tu plantilla y qui\u00e9n no. \u00c9se es un aspecto de lo que se denomina <a href=\"https:\/\/make.wordpress.org\/core\/2022\/02\/09\/core-editor-improvement-curated-experiences-with-locking-apis-theme-json\/\" target=\"_blank\" rel=\"noopener noreferrer\">Experiencia Curada<\/a>.<\/p>\n<p>Pero espera. \u00bfHas intentado editar el contenido de tu entrada utilizando el editor de c\u00f3digo? Bueno, puede que te sorprenda ver que los usuarios a los que no se les permite desbloquear bloques desde la interfaz de usuario a\u00fan pueden cambiar el contenido desde el editor de c\u00f3digo.<\/p>\n<h3>Deshabilitar el Editor de C\u00f3digo para Roles de Usuario Espec\u00edficos<\/h3>\n<p>Por defecto, todos los usuarios que pueden editar contenido pueden acceder al editor de c\u00f3digo. Esto podr\u00eda anular tu configuraci\u00f3n de bloqueo y algunos usuarios podr\u00edan arruinar o borrar el dise\u00f1o de tu plantilla.<\/p>\n<p>Tambi\u00e9n puedes utilizar <code>block_editor_settings_all<\/code> para filtrar la configuraci\u00f3n <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/filters\/editor-filters\/#codeeditingenabled\" target=\"_blank\" rel=\"noopener noreferrer\"><code>codeEditingEnabled<\/code><\/a> para evitar que determinados roles de usuario accedan al editor de c\u00f3digo. Este es el c\u00f3digo:<\/p>\n<pre><code class=\"language-php\">add_filter( 'block_editor_settings_all', \n\tfunction( $settings, $context ) {\n\t\tif ( $context-&gt;post && 'book' === $context-&gt;post-&gt;post_type ) {\n\t\t\t$settings['canLockBlocks'] = current_user_can( 'edit_others_posts' );\n\t\t\t$settings['codeEditingEnabled'] = current_user_can( 'edit_others_posts' );\n\t\t}\n\t\treturn $settings;\n\t}, 10, 2\n);<\/code><\/pre>\n<p>Con este c\u00f3digo, los usuarios que no tengan la funci\u00f3n <code>edit_others_posts<\/code> no podr\u00e1n acceder al editor de c\u00f3digo. La siguiente imagen muestra la barra de herramientas Opciones para un Autor.<\/p>\n<figure id=\"attachment_161825\" aria-describedby=\"caption-attachment-161825\" style=\"width: 2128px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-161825 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/options-toolbar-without-code-editor-access.jpg\" alt=\"La barra de herramientas Opciones para un rol de usuario sin acceso al editor de c\u00f3digo\" width=\"2128\" height=\"1202\"><figcaption id=\"caption-attachment-161825\" class=\"wp-caption-text\">La barra de herramientas Opciones para un rol de usuario sin acceso al editor de c\u00f3digo<\/figcaption><\/figure>\n<p>Esto es lo que necesitas saber para construir plantillas de bloques mediante PHP. Ahora bien, si eres un desarrollador de bloques de Gutenberg y te encanta trabajar con <a href=\"https:\/\/kinsta.com\/javascript\/\">JavaScript<\/a>, puede que prefieras optar por un enfoque diferente.<\/p>\n<h2>C\u00f3mo Construir una Plantilla Utilizando JavaScript<\/h2>\n<p>A\u00f1adir una plantilla de bloque a una entrada funciona de forma diferente si decides utilizar JavaScript. Todav\u00eda puedes construir una plantilla, pero necesitas crear un bloque personalizado y utilizar el componente <code>InnerBlocks<\/code>, tal y como se explica en nuestra <a href=\"https:\/\/kinsta.com\/es\/blog\/bloques-gutenberg\/#innerblocks-component\">gu\u00eda de desarrollo de bloques de Gutenberg<\/a>.<\/p>\n<blockquote><p><em>InnerBlocks exporta un par de componentes que pueden utilizarse en implementaciones de bloques para habilitar el contenido de bloques anidados.<\/em> \u2014 Fuente: <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/blob\/HEAD\/packages\/block-editor\/src\/components\/inner-blocks\/README.md\" target=\"_blank\" rel=\"noopener noreferrer\">InnerBlocks<\/a><\/p><\/blockquote>\n<p>\u00bfC\u00f3mo funciona?<\/p>\n<p>Puedes utilizar <code>InnerBlocks<\/code> en tus bloques personalizados del mismo modo que cualquier otro componente de Gutenberg.<\/p>\n<p>Primero tienes que incluirlo desde un paquete junto con otras dependencias:<\/p>\n<pre><code class=\"language-javascript\">import { registerBlockType } from '@wordpress\/blocks';\nimport { useBlockProps, InnerBlocks } from '@wordpress\/block-editor';<\/code><\/pre>\n<p>A continuaci\u00f3n, definir\u00e1s las propiedades de <code>InnerBlocks<\/code>. En el siguiente ejemplo, declararemos una constante <code>TEMPLATE<\/code> que luego utilizaremos para establecer el valor de la propiedad <code>template<\/code> del elemento <code>InnerBlocks<\/code>:<\/p>\n<pre><code class=\"language-javascript\">const TEMPLATE = [\n\t[ 'core\/paragraph', { 'placeholder': 'Add paragraph...' } ],\n\t[ 'core\/columns', { verticalAlignment: 'center' }, \n\t\t[\n\t\t\t[ \n\t\t\t\t'core\/column', \n\t\t\t\t{ templateLock: 'all' }, \n\t\t\t\t[\n\t\t\t\t\t[ 'core\/image' ]\n\t\t\t\t]\n\t\t\t],\n\t\t\t[ \n\t\t\t\t'core\/column', \n\t\t\t\t{ templateLock: 'all' }, \n\t\t\t\t[\n\t\t\t\t\t[ \n\t\t\t\t\t\t'core\/heading', \n\t\t\t\t\t\t{'placeholder': 'Add H3...', 'level': 3}\n\t\t\t\t\t], \n\t\t\t\t\t[ \n\t\t\t\t\t\t'core\/paragraph', \n\t\t\t\t\t\t{'placeholder': 'Add paragraph...'} \n\t\t\t\t\t]\n\t\t\t\t], \n\t\t\t]\n\t\t]\n\t]\n];\nregisterBlockType( metadata.name, {\n\ttitle: 'My Template',\n\tcategory: 'widgets',\n\tedit: ( props ) =&gt; {\n\t\treturn(\n\t\t\t&lt;div&gt;\n\t\t\t\t&lt;InnerBlocks\n\t\t\t\t\ttemplate={ TEMPLATE }\n\t\t\t\t\ttemplateLock=\"insert\"\n\t\t\t\t\/&gt;\n\t\t\t&lt;\/div&gt;\n\t\t)\n\t},\n\tsave() {\n\t\tconst blockProps = useBlockProps.save();\n\t\treturn(\n\t\t\t&lt;div { ...blockProps }&gt;\n\t\t\t\t&lt;InnerBlocks.Content \/&gt;\n\t\t\t&lt;\/div&gt;\n\t\t)\n\t}\n} );<\/code><\/pre>\n<p>Este c\u00f3digo es bastante sencillo. Observa que hemos utilizado el atributo <code>templateLock<\/code> dos veces, primero a nivel de bloque y luego dentro del elemento <code>InnerBlocks<\/code>. Para ver la lista completa de accesorios disponibles, consulta la <a href=\"https:\/\/github.com\/WordPress\/gutenberg\/blob\/HEAD\/packages\/block-editor\/src\/components\/inner-blocks\/README.md\" target=\"_blank\" rel=\"noopener noreferrer\">referencia<code>InnerBlocks<\/code><\/a> y el <a href=\"https:\/\/developer.wordpress.org\/block-editor\/how-to-guides\/block-tutorial\/nested-blocks-inner-blocks\/\">Manual del Editor de Bloques<\/a>.<\/p>\n<p>Ahora pru\u00e9balo t\u00fa mismo.<\/p>\n<p>Primero, crea una instalaci\u00f3n local de WordPress utilizando <a href=\"https:\/\/kinsta.com\/es\/devkinsta\/caracteristicas\/\">DevKinsta<\/a> o cualquier otro <a href=\"https:\/\/kinsta.com\/local-development\/\">entorno de desarrollo local<\/a>.<\/p>\n<p>A continuaci\u00f3n, inicia tu herramienta de l\u00ednea de comandos, navega hasta tu carpeta de <strong>plugins<\/strong> y ejecuta el siguiente comando:<\/p>\n<pre><code class=\"language-bash\">npx @wordpress\/create-block template-block<\/code><\/pre>\n<p>Puedes cambiar el nombre del bloque por el que quieras. Si prefieres controlar todos y cada uno de los aspectos de tu bloque de inicio, s\u00f3lo tienes que seguir las instrucciones proporcionadas en nuestra <a href=\"https:\/\/kinsta.com\/es\/blog\/bloques-gutenberg\/#set-up-the-plugin\">gu\u00eda definitiva para el desarrollo de bloques<\/a>.<\/p>\n<p>Una vez completada la instalaci\u00f3n, ejecuta los siguientes comandos:<\/p>\n<pre><code class=\"language-bash\">cd template-block\nnpm start<\/code><\/pre>\n<p>Abre tu <a href=\"https:\/\/kinsta.com\/es\/blog\/panel-control-administracion-wordpress\/\">panel de administraci\u00f3n de WordPress<\/a> y ve a la pantalla de <strong>plugins<\/strong>. Busca y activa tu plugin <strong>Bloque de Plantillas<\/strong>.<\/p>\n<p>En tu <a href=\"https:\/\/kinsta.com\/es\/blog\/editores-html-gratuitos\/\">editor de c\u00f3digo<\/a> favorito, abre el archivo <strong>index.js<\/strong> que encontrar\u00e1s en la carpeta <strong>src<\/strong>. Copia y pega el c\u00f3digo anterior, guarda tu <strong>index.js<\/strong> y, de nuevo en el panel de control de WordPress, crea una nueva entrada o p\u00e1gina.<\/p>\n<p>Abre el insertador de bloques y despl\u00e1zate hasta la secci\u00f3n <strong>Widgets<\/strong>. All\u00ed deber\u00edas encontrar tu bloque personalizado.<\/p>\n<figure id=\"attachment_161826\" aria-describedby=\"caption-attachment-161826\" style=\"width: 2260px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-161826 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/my-template-block-1.jpg\" alt=\"Un bloque personalizado en el insertador de bloques\" width=\"2260\" height=\"1410\"><figcaption id=\"caption-attachment-161826\" class=\"wp-caption-text\">Un bloque personalizado en el insertador de bloques<\/figcaption><\/figure>\n<p>A\u00f1\u00e1delo a la entrada, personaliza el contenido y guarda la entrada.<\/p>\n<figure id=\"attachment_161827\" aria-describedby=\"caption-attachment-161827\" style=\"width: 2258px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-161827 size-full\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/08\/template-in-list-view-1.jpg\" alt=\"Vista de lista de una plantilla personalizada\" width=\"2258\" height=\"936\"><figcaption id=\"caption-attachment-161827\" class=\"wp-caption-text\">Vista de lista de una plantilla personalizada<\/figcaption><\/figure>\n<p>Si cambias al editor de c\u00f3digo, ver\u00e1s el siguiente marcado:<\/p>\n<pre><code class=\"language-markup\">&lt;!-- wp:create-block\/template-block --&gt;\n&lt;div class=\"wp-block-create-block-template-block\"&gt;&lt;!-- wp:paragraph {\"placeholder\":\"Add paragraph...\"} --&gt;\n&lt;p&gt;&lt;\/p&gt;\n&lt;!-- \/wp:paragraph --&gt;\n\n&lt;!-- wp:columns {\"verticalAlignment\":\"center\"} --&gt;\n&lt;div class=\"wp-block-columns are-vertically-aligned-center\"&gt;&lt;!-- wp:column {\"templateLock\":\"all\"} --&gt;\n&lt;div class=\"wp-block-column\"&gt;&lt;!-- wp:image --&gt;\n&lt;figure class=\"wp-block-image\"&gt;&lt;img alt=\"\"\/&gt;&lt;\/figure&gt;\n&lt;!-- \/wp:image --&gt;&lt;\/div&gt;\n&lt;!-- \/wp:column --&gt;\n\n&lt;!-- wp:column {\"templateLock\":\"all\"} --&gt;\n&lt;div class=\"wp-block-column\"&gt;&lt;!-- wp:heading {\"level\":3,\"placeholder\":\"Add H3...\"} --&gt;\n&lt;h3 class=\"wp-block-heading\"&gt;&lt;\/h3&gt;\n&lt;!-- \/wp:heading --&gt;\n\n&lt;!-- wp:paragraph {\"placeholder\":\"Add paragraph...\"} --&gt;\n&lt;p&gt;&lt;\/p&gt;\n&lt;!-- \/wp:paragraph --&gt;&lt;\/div&gt;\n&lt;!-- \/wp:column --&gt;&lt;\/div&gt;\n&lt;!-- \/wp:columns --&gt;&lt;\/div&gt;\n&lt;!-- \/wp:create-block\/template-block --&gt;<\/code><\/pre>\n<p>Ahora previsualiza el resultado en tu <a href=\"https:\/\/kinsta.com\/browsers\/\">navegador favorito<\/a>. Si necesitas mejorar el aspecto de tu bloque, s\u00f3lo tienes que cambiar los estilos en tu archivo <strong>style.scss<\/strong>.<\/p>\n<p>Cuando est\u00e9s satisfecho con tus personalizaciones, det\u00e9n el proceso y ejecuta <code>npm run build<\/code>. Todos los archivos de tu proyecto se comprimir\u00e1n y estar\u00e1n disponibles para producci\u00f3n en la nueva carpeta <strong>build<\/strong>.<\/p>\n<p>Es f\u00e1cil y potente, \u00bfverdad?<\/p>\n<p>Ahora puedes crear plantillas avanzadas de bloques que puedes incluir en tu contenido con s\u00f3lo unos clics.<\/p>\n<h2>Resumen<\/h2>\n<p>A\u00f1adir una plantilla de bloques a tus entradas o tipos de entradas personalizados puede acelerar y mejorar dr\u00e1sticamente la experiencia de creaci\u00f3n y edici\u00f3n en tu sitio web WordPress. Las plantillas de bloques son especialmente \u00fatiles en sitios web multiusuario, donde varios usuarios pueden crear contenido y necesitas que se adhieran al mismo formato.<\/p>\n<p>Esto tambi\u00e9n te permite crear dise\u00f1os uniformes sin tener que a\u00f1adir manualmente un patr\u00f3n de bloques cada vez que crees una nueva entrada. Piensa en un sitio web de rese\u00f1as o recetas, donde cada p\u00e1gina debe respetar la misma estructura.<\/p>\n<p>Combinando los conocimientos que habr\u00e1s adquirido en la creaci\u00f3n de bloques personalizados <a href=\"https:\/\/kinsta.com\/es\/blog\/bloques-gutenberg\/\">est\u00e1ticos<\/a> o <a href=\"https:\/\/kinsta.com\/es\/blog\/bloques-dinamicos\/\">din\u00e1micos<\/a>, <a href=\"https:\/\/kinsta.com\/es\/blog\/patrones-de-bloques-wordpress\/\">patrones de bloques<\/a> y plantillas de bloques, podr\u00e1s identificar siempre la soluci\u00f3n m\u00e1s eficiente y eficaz para crear cualquier tipo de sitio web WordPress.<\/p>\n<p>Ahora depende de ti. \u00bfHas explorado ya las plantillas de bloques? \u00bfPara qu\u00e9 caso de uso te parecen m\u00e1s adecuadas? Por favor, comparte tu experiencia en los comentarios a continuaci\u00f3n.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En la era Gutenberg, el proceso de dise\u00f1o no est\u00e1 estrictamente ligado a los temas de WordPress. Desde el principio, el CMS proporciona a los usuarios &#8230;<\/p>\n","protected":false},"author":36,"featured_media":69791,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[861,486,659],"topic":[1345],"class_list":["post-69790","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-block-editor","tag-gutenberg","tag-wordpress-developers","topic-desarrollo-wordpress"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Crear Plantillas de Bloques de WordPress - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Aprende a crear plantillas de bloques de WordPress, dise\u00f1os de bloques predise\u00f1ados que se cargan autom\u00e1ticamente en el editor de bloques en esta gu\u00eda detallada.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C\u00f3mo Crear Plantillas de Bloques de WordPress\" \/>\n<meta property=\"og:description\" content=\"Aprende a crear plantillas de bloques de WordPress, dise\u00f1os de bloques predise\u00f1ados que se cargan autom\u00e1ticamente en el editor de bloques en esta gu\u00eda detallada.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinsta.es\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-09-04T14:13:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-11T08:00:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/09\/wordpress-block-templates.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Carlo Daniele\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Aprende a crear plantillas de bloques de WordPress, dise\u00f1os de bloques predise\u00f1ados que se cargan autom\u00e1ticamente en el editor de bloques en esta gu\u00eda detallada.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/09\/wordpress-block-templates.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@carlodaniele\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_ES\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Carlo Daniele\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/\"},\"author\":{\"name\":\"Carlo Daniele\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63\"},\"headline\":\"C\u00f3mo Crear Plantillas de Bloques de WordPress\",\"datePublished\":\"2023-09-04T14:13:42+00:00\",\"dateModified\":\"2023-09-11T08:00:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/\"},\"wordCount\":2698,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/09\/wordpress-block-templates.jpg\",\"keywords\":[\"Block Editor\",\"Gutenberg\",\"WordPress developers\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/\",\"url\":\"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/\",\"name\":\"Crear Plantillas de Bloques de WordPress - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/09\/wordpress-block-templates.jpg\",\"datePublished\":\"2023-09-04T14:13:42+00:00\",\"dateModified\":\"2023-09-11T08:00:28+00:00\",\"description\":\"Aprende a crear plantillas de bloques de WordPress, dise\u00f1os de bloques predise\u00f1ados que se cargan autom\u00e1ticamente en el editor de bloques en esta gu\u00eda detallada.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/09\/wordpress-block-templates.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/09\/wordpress-block-templates.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Desarrollo WordPress\",\"item\":\"https:\/\/kinsta.com\/es\/secciones\/desarrollo-wordpress\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"C\u00f3mo Crear Plantillas de Bloques de WordPress\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/es\/#website\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluciones de alojamiento premium, r\u00e1pidas y seguras\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/es\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinsta.es\/\",\"https:\/\/x.com\/Kinsta_ES\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63\",\"name\":\"Carlo Daniele\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g\",\"caption\":\"Carlo Daniele\"},\"description\":\"Carlo is a passionate lover of webdesign and front-end development. He has been playing with WordPress for more than 20 years, also in collaboration with Italian and European universities and educational institutions. He has written hundreds of articles and guides about WordPress, published both on Italian and international websites, as well as on printed magazines. You can find him on LinkedIn.\",\"sameAs\":[\"https:\/\/frammentidicodice.com\/\",\"https:\/\/x.com\/carlodaniele\"],\"url\":\"https:\/\/kinsta.com\/es\/blog\/author\/carlodaniele\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Crear Plantillas de Bloques de WordPress - Kinsta\u00ae","description":"Aprende a crear plantillas de bloques de WordPress, dise\u00f1os de bloques predise\u00f1ados que se cargan autom\u00e1ticamente en el editor de bloques en esta gu\u00eda detallada.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/","og_locale":"es_ES","og_type":"article","og_title":"C\u00f3mo Crear Plantillas de Bloques de WordPress","og_description":"Aprende a crear plantillas de bloques de WordPress, dise\u00f1os de bloques predise\u00f1ados que se cargan autom\u00e1ticamente en el editor de bloques en esta gu\u00eda detallada.","og_url":"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinsta.es\/","article_published_time":"2023-09-04T14:13:42+00:00","article_modified_time":"2023-09-11T08:00:28+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/09\/wordpress-block-templates.jpg","type":"image\/jpeg"}],"author":"Carlo Daniele","twitter_card":"summary_large_image","twitter_description":"Aprende a crear plantillas de bloques de WordPress, dise\u00f1os de bloques predise\u00f1ados que se cargan autom\u00e1ticamente en el editor de bloques en esta gu\u00eda detallada.","twitter_image":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/09\/wordpress-block-templates.jpg","twitter_creator":"@carlodaniele","twitter_site":"@Kinsta_ES","twitter_misc":{"Escrito por":"Carlo Daniele","Tiempo de lectura":"18 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/"},"author":{"name":"Carlo Daniele","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63"},"headline":"C\u00f3mo Crear Plantillas de Bloques de WordPress","datePublished":"2023-09-04T14:13:42+00:00","dateModified":"2023-09-11T08:00:28+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/"},"wordCount":2698,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/09\/wordpress-block-templates.jpg","keywords":["Block Editor","Gutenberg","WordPress developers"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/","url":"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/","name":"Crear Plantillas de Bloques de WordPress - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/09\/wordpress-block-templates.jpg","datePublished":"2023-09-04T14:13:42+00:00","dateModified":"2023-09-11T08:00:28+00:00","description":"Aprende a crear plantillas de bloques de WordPress, dise\u00f1os de bloques predise\u00f1ados que se cargan autom\u00e1ticamente en el editor de bloques en esta gu\u00eda detallada.","breadcrumb":{"@id":"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/#primaryimage","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/09\/wordpress-block-templates.jpg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/09\/wordpress-block-templates.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/es\/blog\/plantillas-de-bloques-wordpress\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/es\/"},{"@type":"ListItem","position":2,"name":"Desarrollo WordPress","item":"https:\/\/kinsta.com\/es\/secciones\/desarrollo-wordpress\/"},{"@type":"ListItem","position":3,"name":"C\u00f3mo Crear Plantillas de Bloques de WordPress"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/es\/#website","url":"https:\/\/kinsta.com\/es\/","name":"Kinsta\u00ae","description":"Soluciones de alojamiento premium, r\u00e1pidas y seguras","publisher":{"@id":"https:\/\/kinsta.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/es\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/es\/wp-content\/uploads\/sites\/8\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinsta.es\/","https:\/\/x.com\/Kinsta_ES","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63","name":"Carlo Daniele","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kinsta.com\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g","caption":"Carlo Daniele"},"description":"Carlo is a passionate lover of webdesign and front-end development. He has been playing with WordPress for more than 20 years, also in collaboration with Italian and European universities and educational institutions. He has written hundreds of articles and guides about WordPress, published both on Italian and international websites, as well as on printed magazines. You can find him on LinkedIn.","sameAs":["https:\/\/frammentidicodice.com\/","https:\/\/x.com\/carlodaniele"],"url":"https:\/\/kinsta.com\/es\/blog\/author\/carlodaniele\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/69790","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/users\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/comments?post=69790"}],"version-history":[{"count":10,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/69790\/revisions"}],"predecessor-version":[{"id":69899,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/posts\/69790\/revisions\/69899"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69790\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69790\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69790\/translations\/pt"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69790\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69790\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69790\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69790\/translations\/es"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69790\/translations\/fr"},{"href":"https:\/\/kinsta.com\/es\/wp-json\/kinsta\/v1\/posts\/69790\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media\/69791"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/media?parent=69790"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/tags?post=69790"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/es\/wp-json\/wp\/v2\/topic?post=69790"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}