DEV Community

Cover image for Full Site Editing al Máximo Nivel: Cómo Usar Bloques Avanzados para Crear Sitios Premium
Joaquin Sáez
Joaquin Sáez

Posted on • Originally published at expertowordpress.org

Full Site Editing al Máximo Nivel: Cómo Usar Bloques Avanzados para Crear Sitios Premium

El Full Site Editing (FSE) de WordPress ha evolucionado de una característica experimental a convertirse en el estándar profesional para crear sitios web de alta calidad. Dominar los bloques avanzados y las técnicas de FSE te permite construir experiencias digitales premium sin necesidad de page builders externos, manteniendo rendimiento óptimo y control total sobre cada aspecto del diseño.

Fundamentos del Full Site Editing: Más Allá de lo Básico

El FSE representa un cambio paradigmático en WordPress. Ya no editamos solo el contenido de las páginas, sino la estructura completa del sitio: headers, footers, archivos, páginas 404 y cada plantilla imaginable.

La Anatomía de un Tema Block-Based

Un tema FSE moderno se compone de:

theme.json: El cerebro del tema, donde defines estilos globales, paletas de colores, tipografías y configuraciones de bloques.

Templates: Plantillas HTML que definen la estructura de páginas específicas (home, single post, archive, etc.).

Parts: Fragmentos reutilizables como headers y footers que se insertan en múltiples plantillas.

Patterns: Combinaciones predefinidas de bloques que aceleran la construcción de páginas.

{
  "$schema": "https://schemas.wp.org/trunk/theme.json",
  "version": 2,
  "settings": {
    "color": {
      "palette": [
        {
          "slug": "primary",
          "color": "#2C3E50",
          "name": "Primary"
        },
        {
          "slug": "secondary",
          "color": "#E74C3C",
          "name": "Secondary"
        },
        {
          "slug": "accent",
          "color": "#F39C12",
          "name": "Accent"
        }
      ],
      "gradients": [
        {
          "slug": "hero-gradient",
          "gradient": "linear-gradient(135deg, #667eea 0%, #764ba2 100%)",
          "name": "Hero Gradient"
        }
      ]
    },
    "typography": {
      "fontFamilies": [
        {
          "fontFamily": "\"Inter\", sans-serif",
          "slug": "primary",
          "name": "Primary Font"
        },
        {
          "fontFamily": "\"Playfair Display\", serif",
          "slug": "heading",
          "name": "Heading Font"
        }
      ],
      "fontSizes": [
        {
          "slug": "small",
          "size": "0.875rem",
          "name": "Small"
        },
        {
          "slug": "medium",
          "size": "1rem",
          "name": "Medium"
        },
        {
          "slug": "large",
          "size": "1.5rem",
          "name": "Large"
        },
        {
          "slug": "x-large",
          "size": "2.5rem",
          "name": "Extra Large"
        }
      ]
    },
    "spacing": {
      "units": ["px", "em", "rem", "vh", "vw", "%"],
      "spacingSizes": [
        {
          "slug": "30",
          "size": "clamp(1.5rem, 5vw, 2rem)",
          "name": "Small"
        },
        {
          "slug": "40",
          "size": "clamp(1.8rem, 1.8rem + ((1vw - 0.48rem) * 2.885), 3rem)",
          "name": "Medium"
        },
        {
          "slug": "50",
          "size": "clamp(2.5rem, 8vw, 4.5rem)",
          "name": "Large"
        }
      ]
    },
    "layout": {
      "contentSize": "750px",
      "wideSize": "1200px"
    }
  },
  "styles": {
    "color": {
      "background": "var(--wp--preset--color--base)",
      "text": "var(--wp--preset--color--contrast)"
    },
    "typography": {
      "fontFamily": "var(--wp--preset--font-family--primary)",
      "lineHeight": "1.6"
    },
    "spacing": {
      "blockGap": "var(--wp--preset--spacing--40)"
    },
    "elements": {
      "button": {
        "color": {
          "background": "var(--wp--preset--color--primary)",
          "text": "var(--wp--preset--color--base)"
        },
        "border": {
          "radius": "8px"
        },
        "spacing": {
          "padding": {
            "top": "1rem",
            "right": "2rem",
            "bottom": "1rem",
            "left": "2rem"
          }
        },
        ":hover": {
          "color": {
            "background": "var(--wp--preset--color--secondary)"
          }
        }
      }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Técnicas Avanzadas con Bloques Nativos

1. Query Loop: El Poder de los Listados Dinámicos

El bloque Query Loop es una revolución para crear listados personalizados de posts sin código PHP.

Caso de uso: Portfolio con filtrado avanzado

Crea un portfolio donde los proyectos se muestren en una cuadrícula con efectos hover profesionales:

<!-- wp:query {"queryId":1,"query":{"perPage":6,"pages":0,"offset":0,"postType":"portfolio","order":"desc","orderBy":"date","author":"","search":"","exclude":[],"sticky":"","inherit":false,"taxQuery":{"category":[4,8]}},"displayLayout":{"type":"flex","columns":3}} -->
<div class="wp-block-query">
  <!-- wp:post-template -->
    <!-- wp:group {"style":{"spacing":{"padding":{"top":"0","right":"0","bottom":"0","left":"0"}},"border":{"radius":"12px"}},"backgroundColor":"base","className":"portfolio-item"} -->
    <div class="wp-block-group portfolio-item has-base-background-color has-background" style="border-radius:12px;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0">
      <!-- wp:post-featured-image {"isLink":true,"aspectRatio":"16/9","style":{"border":{"radius":"12px 12px 0 0"}}} /-->

      <!-- wp:group {"style":{"spacing":{"padding":{"top":"var:preset|spacing|40","right":"var:preset|spacing|40","bottom":"var:preset|spacing|40","left":"var:preset|spacing|40"}}},"layout":{"type":"constrained"}} -->
      <div class="wp-block-group" style="padding-top:var(--wp--preset--spacing--40);padding-right:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--40)">
        <!-- wp:post-title {"level":3,"isLink":true,"style":{"typography":{"fontSize":"1.5rem"}}} /-->

        <!-- wp:post-excerpt {"moreText":"Ver proyecto →","excerptLength":15} /-->

        <!-- wp:post-terms {"term":"portfolio_category","style":{"spacing":{"margin":{"top":"var:preset|spacing|30"}}}} /-->
      </div>
      <!-- /wp:group -->
    </div>
    <!-- /wp:group -->
  <!-- /wp:post-template -->

  <!-- wp:query-pagination {"layout":{"type":"flex","justifyContent":"center"}} -->
    <!-- wp:query-pagination-previous /-->
    <!-- wp:query-pagination-numbers /-->
    <!-- wp:query-pagination-next /-->
  <!-- /wp:query-pagination -->
</div>
<!-- /wp:query -->
Enter fullscreen mode Exit fullscreen mode

Personalización avanzada con CSS personalizado:

.portfolio-item {
  transition: all 0.3s ease;
  overflow: hidden;
}

.portfolio-item:hover {
  transform: translateY(-8px);
  box-shadow: 0 20px 40px rgba(0,0,0,0.1);
}

.portfolio-item img {
  transition: transform 0.3s ease;
}

.portfolio-item:hover img {
  transform: scale(1.05);
}
Enter fullscreen mode Exit fullscreen mode

2. Bloques de Grupo y Cover: Capas de Diseño Sofisticadas

Combina bloques Group y Cover para crear secciones con profundidad visual:

Hero Section Premium:

<!-- wp:cover {"url":"hero-bg.jpg","dimRatio":50,"overlayColor":"primary","minHeight":100,"minHeightUnit":"vh","gradient":"hero-gradient","contentPosition":"center center","isDark":false,"style":{"spacing":{"padding":{"top":"var:preset|spacing|50","right":"var:preset|spacing|50","bottom":"var:preset|spacing|50","left":"var:preset|spacing|50"}}}} -->
<div class="wp-block-cover is-light" style="padding-top:var(--wp--preset--spacing--50);padding-right:var(--wp--preset--spacing--50);padding-bottom:var(--wp--preset--spacing--50);padding-left:var(--wp--preset--spacing--50);min-height:100vh">
  <span aria-hidden="true" class="wp-block-cover__background has-primary-background-color has-background-dim has-background-gradient has-hero-gradient-gradient-background"></span>
  <img class="wp-block-cover__image-background" src="hero-bg.jpg" />

  <div class="wp-block-cover__inner-container">
    <!-- wp:group {"layout":{"type":"constrained","contentSize":"800px"}} -->
    <div class="wp-block-group">
      <!-- wp:heading {"textAlign":"center","level":1,"style":{"typography":{"fontSize":"clamp(2.5rem, 6vw, 4.5rem)","fontWeight":"700","lineHeight":"1.1"},"spacing":{"margin":{"bottom":"var:preset|spacing|40"}}}} -->
      <h1 class="has-text-align-center" style="margin-bottom:var(--wp--preset--spacing--40);font-size:clamp(2.5rem, 6vw, 4.5rem);font-weight:700;line-height:1.1">
        Transformamos Ideas en Experiencias Digitales Premium
      </h1>
      <!-- /wp:heading -->

      <!-- wp:paragraph {"align":"center","style":{"typography":{"fontSize":"1.25rem"},"spacing":{"margin":{"bottom":"var:preset|spacing|50"}}}} -->
      <p class="has-text-align-center" style="margin-bottom:var(--wp--preset--spacing--50);font-size:1.25rem">
        Diseño web, desarrollo y estrategia digital que impulsan resultados reales para tu negocio
      </p>
      <!-- /wp:paragraph -->

      <!-- wp:buttons {"layout":{"type":"flex","justifyContent":"center"}} -->
      <div class="wp-block-buttons">
        <!-- wp:button {"style":{"spacing":{"padding":{"top":"1.2rem","right":"2.5rem","bottom":"1.2rem","left":"2.5rem"}},"typography":{"fontSize":"1.1rem"}}} -->
        <div class="wp-block-button">
          <a class="wp-block-button__link wp-element-button" style="padding-top:1.2rem;padding-right:2.5rem;padding-bottom:1.2rem;padding-left:2.5rem;font-size:1.1rem">
            Comenzar Proyecto
          </a>
        </div>
        <!-- /wp:button -->

        <!-- wp:button {"className":"is-style-outline"} -->
        <div class="wp-block-button is-style-outline">
          <a class="wp-block-button__link wp-element-button">Ver Portfolio</a>
        </div>
        <!-- /wp:button -->
      </div>
      <!-- /wp:buttons -->
    </div>
    <!-- /wp:group -->
  </div>
</div>
<!-- /wp:cover -->
Enter fullscreen mode Exit fullscreen mode

3. Columns con Diseño Asimétrico

Rompe la monotonía con layouts asimétricos que captan la atención:

<!-- wp:columns {"style":{"spacing":{"blockGap":{"top":"var:preset|spacing|50","left":"var:preset|spacing|50"}}}} -->
<div class="wp-block-columns">
  <!-- wp:column {"width":"40%"} -->
  <div class="wp-block-column" style="flex-basis:40%">
    <!-- wp:image {"sizeSlug":"large","style":{"border":{"radius":"16px"}}} -->
    <figure class="wp-block-image size-large" style="border-radius:16px">
      <img src="feature-image.jpg" alt=""/>
    </figure>
    <!-- /wp:image -->
  </div>
  <!-- /wp:column -->

  <!-- wp:column {"width":"60%","verticalAlignment":"center"} -->
  <div class="wp-block-column is-vertically-aligned-center" style="flex-basis:60%">
    <!-- wp:heading {"level":2} -->
    <h2>Soluciones Personalizadas para Cada Desafío</h2>
    <!-- /wp:heading -->

    <!-- wp:paragraph -->
    <p>No utilizamos plantillas genéricas. Cada proyecto es único y merece una solución diseñada específicamente para sus objetivos y audiencia.</p>
    <!-- /wp:paragraph -->

    <!-- wp:list {"className":"custom-checklist"} -->
    <ul class="custom-checklist">
      <li>Análisis profundo de necesidades</li>
      <li>Diseño centrado en conversión</li>
      <li>Desarrollo escalable y mantenible</li>
      <li>Soporte continuo post-lanzamiento</li>
    </ul>
    <!-- /wp:list -->
  </div>
  <!-- /wp:column -->
</div>
<!-- /wp:columns -->
Enter fullscreen mode Exit fullscreen mode

Bloques Personalizados: Extendiendo las Capacidades

Crear un Bloque de Estadísticas con Animaciones

Aunque FSE es poderoso, a veces necesitas bloques completamente personalizados. Aquí un ejemplo de bloque React para estadísticas animadas:

import { registerBlockType } from '@wordpress/blocks';
import { useBlockProps, InspectorControls } from '@wordpress/block-editor';
import { PanelBody, TextControl } from '@wordpress/components';
import { useEffect, useRef } from '@wordpress/element';

registerBlockType('premium-blocks/animated-stats', {
  title: 'Estadísticas Animadas',
  icon: 'chart-bar',
  category: 'widgets',
  attributes: {
    number: { type: 'string', default: '1000' },
    label: { type: 'string', default: 'Proyectos Completados' },
    suffix: { type: 'string', default: '+' },
    duration: { type: 'number', default: 2000 }
  },

  edit: ({ attributes, setAttributes }) => {
    const blockProps = useBlockProps();
    const { number, label, suffix, duration } = attributes;
    const numberRef = useRef(null);

    useEffect(() => {
      const animateNumber = () => {
        const target = parseInt(number);
        const increment = target / (duration / 16);
        let current = 0;

        const timer = setInterval(() => {
          current += increment;
          if (current >= target) {
            numberRef.current.textContent = target;
            clearInterval(timer);
          } else {
            numberRef.current.textContent = Math.floor(current);
          }
        }, 16);
      };

      animateNumber();
    }, [number, duration]);

    return (
      <>
        <InspectorControls>
          <PanelBody title="Configuración">
            <TextControl
              label="Número"
              value={number}
              onChange={(val) => setAttributes({ number: val })}
            />
            <TextControl
              label="Etiqueta"
              value={label}
              onChange={(val) => setAttributes({ label: val })}
            />
            <TextControl
              label="Sufijo"
              value={suffix}
              onChange={(val) => setAttributes({ suffix: val })}
            />
          </PanelBody>
        </InspectorControls>

        <div {...blockProps} className="stat-block">
          <div className="stat-number">
            <span ref={numberRef}>0</span>
            <span className="stat-suffix">{suffix}</span>
          </div>
          <div className="stat-label">{label}</div>
        </div>
      </>
    );
  },

  save: ({ attributes }) => {
    const blockProps = useBlockProps.save();
    const { number, label, suffix } = attributes;

    return (
      <div {...blockProps} className="stat-block" data-target={number}>
        <div className="stat-number">
          <span className="stat-value">0</span>
          <span className="stat-suffix">{suffix}</span>
        </div>
        <div className="stat-label">{label}</div>
      </div>
    );
  }
});
Enter fullscreen mode Exit fullscreen mode

CSS para el bloque:

.stat-block {
  text-align: center;
  padding: 2rem;
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  border-radius: 16px;
  color: white;
  box-shadow: 0 10px 30px rgba(0,0,0,0.2);
}

.stat-number {
  font-size: 3.5rem;
  font-weight: 700;
  line-height: 1;
  margin-bottom: 0.5rem;
}

.stat-suffix {
  font-size: 2.5rem;
  opacity: 0.9;
}

.stat-label {
  font-size: 1.1rem;
  opacity: 0.95;
  text-transform: uppercase;
  letter-spacing: 1px;
}
Enter fullscreen mode Exit fullscreen mode

Patterns Reutilizables: Acelera tu Workflow

Los patterns son combinaciones de bloques pre-diseñadas que puedes insertar en cualquier página. Crea una biblioteca de patterns para tu agencia:

Pattern de Testimonios:

<?php
/**
 * Title: Testimonial Section
 * Slug: premium-theme/testimonial-section
 * Categories: featured
 */
?>

<!-- wp:group {"align":"full","style":{"spacing":{"padding":{"top":"var:preset|spacing|50","bottom":"var:preset|spacing|50"}}},"backgroundColor":"contrast","textColor":"base","layout":{"type":"constrained"}} -->
<div class="wp-block-group alignfull has-base-color has-contrast-background-color has-text-color has-background" style="padding-top:var(--wp--preset--spacing--50);padding-bottom:var(--wp--preset--spacing--50)">

  <!-- wp:heading {"textAlign":"center","style":{"spacing":{"margin":{"bottom":"var:preset|spacing|50"}}}} -->
  <h2 class="has-text-align-center" style="margin-bottom:var(--wp--preset--spacing--50)">
    Lo Que Dicen Nuestros Clientes
  </h2>
  <!-- /wp:heading -->

  <!-- wp:columns {"style":{"spacing":{"blockGap":{"left":"var:preset|spacing|40"}}}} -->
  <div class="wp-block-columns">

    <!-- wp:column -->
    <div class="wp-block-column">
      <!-- wp:group {"style":{"spacing":{"padding":{"top":"var:preset|spacing|40","right":"var:preset|spacing|40","bottom":"var:preset|spacing|40","left":"var:preset|spacing|40"}},"border":{"radius":"12px"}},"backgroundColor":"base","textColor":"contrast"} -->
      <div class="wp-block-group has-contrast-color has-base-background-color has-text-color has-background" style="border-radius:12px;padding-top:var(--wp--preset--spacing--40);padding-right:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--40)">

        <!-- wp:paragraph {"style":{"typography":{"fontSize":"1.1rem","lineHeight":"1.8"},"spacing":{"margin":{"bottom":"var:preset|spacing|30"}}}} -->
        <p style="margin-bottom:var(--wp--preset--spacing--30);font-size:1.1rem;line-height:1.8">
          "El equipo superó todas nuestras expectativas. No solo entregaron un sitio hermoso, sino que realmente entendieron nuestro negocio."
        </p>
        <!-- /wp:paragraph -->

        <!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|20"}},"layout":{"type":"flex","flexWrap":"nowrap"}} -->
        <div class="wp-block-group">
          <!-- wp:image {"width":"50px","height":"50px","sizeSlug":"thumbnail","style":{"border":{"radius":"50%"}}} -->
          <figure class="wp-block-image size-thumbnail is-resized" style="border-radius:50%">
            <img src="avatar1.jpg" alt="" style="width:50px;height:50px"/>
          </figure>
          <!-- /wp:image -->

          <!-- wp:group {"style":{"spacing":{"blockGap":"0"}},"layout":{"type":"flex","orientation":"vertical"}} -->
          <div class="wp-block-group">
            <!-- wp:paragraph {"style":{"typography":{"fontWeight":"600"}}} -->
            <p style="font-weight:600">María González</p>
            <!-- /wp:paragraph -->

            <!-- wp:paragraph {"style":{"typography":{"fontSize":"0.9rem"},"elements":{"link":{"color":{"text":"var:preset|color|secondary"}}}},"textColor":"secondary"} -->
            <p class="has-secondary-color has-text-color has-link-color" style="font-size:0.9rem">CEO, TechStart</p>
            <!-- /wp:paragraph -->
          </div>
          <!-- /wp:group -->
        </div>
        <!-- /wp:group -->

      </div>
      <!-- /wp:group -->
    </div>
    <!-- /wp:column -->

    <!-- Repetir para más testimonios -->

  </div>
  <!-- /wp:columns -->

</div>
<!-- /wp:group -->
Enter fullscreen mode Exit fullscreen mode

Optimización de Rendimiento en FSE

1. Lazy Loading Estratégico

Configura imágenes para carga diferida automática:

{
  "settings": {
    "blocks": {
      "core/image": {
        "color": true,
        "border": {
          "radius": true
        }
      }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

2. Minimiza el Uso de CSS Personalizado

Aprovecha al máximo las utilidades de theme.json antes de agregar CSS custom. Esto reduce significativamente el peso de tu tema.

3. Preload de Fuentes

En tu functions.php:

function premium_theme_preload_fonts() {
    ?>
    <link rel="preload" href="<?php echo get_template_directory_uri(); ?>/assets/fonts/inter-var.woff2" as="font" type="font/woff2" crossorigin>
    <link rel="preload" href="<?php echo get_template_directory_uri(); ?>/assets/fonts/playfair-display.woff2" as="font" type="font/woff2" crossorigin>
    <?php
}
add_action('wp_head', 'premium_theme_preload_fonts', 1);
Enter fullscreen mode Exit fullscreen mode

Técnicas de Animación con FSE

Agrega animaciones sutiles sin JavaScript pesado usando CSS y atributos de bloques:

/* En tu stylesheet */
.fade-in-up {
  opacity: 0;
  transform: translateY(30px);
  animation: fadeInUp 0.6s ease forwards;
}

@keyframes fadeInUp {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Delays escalonados */
.fade-in-up:nth-child(1) { animation-delay: 0.1s; }
.fade-in-up:nth-child(2) { animation-delay: 0.2s; }
.fade-in-up:nth-child(3) { animation-delay: 0.3s; }

/* Parallax suave con CSS */
.parallax-section {
  background-attachment: fixed;
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
}

/* Hover effects premium */
.premium-card {
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.premium-card:hover {
  transform: translateY(-8px) scale(1.02);
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15);
}
Enter fullscreen mode Exit fullscreen mode

Workflow Profesional con FSE

1. Sistema de Versiones para Templates

Mantén versiones de tus templates en el editor:

/wp-content/themes/tu-tema/
  ├── templates/
  │   ├── home.html
  │   ├── single.html
  │   ├── archive.html
  │   └── page.html
  ├── parts/
  │   ├── header.html
  │   ├── footer.html
  │   └── sidebar.html
  └── patterns/
      ├── hero-section.php
      ├── services-grid.php
      └── testimonials.php
Enter fullscreen mode Exit fullscreen mode

2. Documentación de Patterns

Crea un archivo README para cada pattern:

# Hero Section Pattern

## Uso
Este pattern se usa para secciones hero en la página de inicio y landing pages.

## Variables disponibles
- Altura: 100vh (personalizable)
- Overlay: 50% (ajustable)
- Posición de contenido: Centro

## Personalización
1. Cambiar imagen de fondo desde el panel de Cover
2. Ajustar el overlay desde las opciones de bloque
3. Modificar textos directamente en el editor
Enter fullscreen mode Exit fullscreen mode

3. Testing Cross-Browser

Siempre prueba en:

  • Chrome/Edge (Chromium)
  • Firefox
  • Safari (macOS e iOS)
  • Dispositivos móviles reales

Casos de Estudio: Sitios Premium con FSE

Ejemplo 1: Sitio Corporativo

Características implementadas:

  • Header sticky con cambio de opacidad en scroll
  • Mega menu con columnas personalizadas
  • Secciones de servicios con iconos animados
  • Formularios de contacto integrados con bloques nativos
  • Blog con diseño magazine usando Query Loop

Resultado: Tiempo de carga < 2 segundos, puntuación Lighthouse > 95

Ejemplo 2: Portfolio Creativo

Características:

  • Scroll horizontal para galería de proyectos
  • Transiciones de página fluidas
  • Lightbox nativo con bloques de imagen
  • Filtrado de proyectos sin plugins
  • Animaciones on-scroll con Intersection Observer

Resultado: Experiencia visual premium sin sacrificar rendimiento

Herramientas Esenciales para FSE

1. Plugin Recomendados (Mínimo necesario)

  • GeneratePress Blocks o Kadence Blocks: Bloques adicionales de calidad
  • Advanced Custom Fields (ACF): Para campos personalizados que se integran con bloques
  • Spectra: Bloques avanzados con opciones de diseño premium

2. Herramientas de Desarrollo

# Compilación de bloques personalizados
npm install @wordpress/scripts --save-dev

# En tu package.json
{
  "scripts": {
    "start": "wp-scripts start",
    "build": "wp-scripts build"
  }
}
Enter fullscreen mode Exit fullscreen mode

3. Testing y Debug

// Habilita debug en wp-config.php
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
define('SCRIPT_DEBUG', true);

// Para debug específico de bloques
define('GUTENBERG_DEVELOPMENT_MODE', true);
Enter fullscreen mode Exit fullscreen mode

Mejores Prácticas y Consejos Pro

1. Nomenclatura Consistente

Usa un sistema de nombres claro para tus bloques, patterns y estilos:

Prefijo de tema: "premium"
Bloques: premium/stat-counter
Patterns: premium-theme/hero-section
CSS Classes: premium-card, premium-button
Enter fullscreen mode Exit fullscreen mode

2. Reutilización Estratégica

Crea bloques reutilizables para elementos que se repiten:

  • Call-to-actions
  • Formularios de contacto
  • Secciones de features
  • Footers alternativos

3. Fallbacks y Accesibilidad

Siempre incluye:

  • Alt text en imágenes
  • Etiquetas ARIA donde sea necesario
  • Contraste de colores accesible (WCAG AA mínimo)
  • Navegación por teclado funcional
  • Skip links para navegación rápida
<!-- Ejemplo de skip link -->
<!-- wp:paragraph {"className":"screen-reader-text"} -->
<p class="screen-reader-text">
  <a href="#main-content">Saltar al contenido principal</a>
</p>
<!-- /wp:paragraph -->
Enter fullscreen mode Exit fullscreen mode

Conclusión: El Futuro es Block-Based

El Full Site Editing representa el futuro del desarrollo en WordPress. Dominar FSE y bloques avanzados te permite:

  • Crear más rápido: Sin dependencias de page builders pesados
  • Mantener mejor: Código limpio y estándares de WordPress
  • Escalar eficientemente: Reutilización de patterns y bloques
  • Optimizar rendimiento: Sin capas innecesarias de abstracción
  • Futuro-proof: Siguiendo la dirección oficial de WordPress

La clave está en combinar los bloques nativos de manera creativa, extenderlos cuando sea necesario con bloques personalizados, y mantener siempre el foco en la experiencia del usuario final y el rendimiento.

Con estas técnicas y herramientas, estás equipado para construir sitios web premium que compitan con cualquier solución de page builder comercial, pero con las ventajas de usar el sistema nativo de WordPress: mejor rendimiento, mayor compatibilidad y un futuro asegurado a medida que WordPress continúa evolucionando hacia una experiencia completamente basada en bloques.

Top comments (0)