27. Bloques PHP para Gutenberg | Field Forge - Campos personalizados, diseñados para la velocidad
Descargar Iniciar sesión

27. Bloques PHP para Gutenberg

Registra bloques personalizados de Gutenberg que se renderizan del lado del servidor utilizando plantillas PHP. Compatible con acf_register_block_type().

fieldforge_register_block_type( $config )

Tanto fieldforge_register_block_type() como acf_register_block_type() son compatibles.

Referencia Completa de Parámetros:
ParámetroTipoPredeterminadoDescripción
namestringrequeridoNombre del bloque (alfanumérico + guiones)
titlestring''Título de visualización en el inserto de bloques
descriptionstring''Descripción en el inspector de bloques
categorystring'fieldforge'Slug de categoría del bloque
iconstring'admin-generic'Nombre de Dashicon
keywordsarray[]Palabras clave de búsqueda (máx. 3)
post_typesarray[]Restringir a tipos de publicaciones específicos
modestring'preview''preview', 'edit', 'auto'
alignstring''Alineación predeterminada
render_templatestring''Ruta absoluta a la plantilla PHP
render_callbackcallable\nullnullFunción de callback
enqueue_stylestring''URL del archivo CSS
enqueue_scriptstring''URL del archivo JS
enqueue_assetscallable\nullnullFunción para encolar activos
supportsarray[]Soportes de bloques de WordPress
examplearray[]Datos de vista previa para el inserto

render_template Ejemplo

php
add_action( 'init', function() {
    if ( ! function_exists( 'fieldforge_register_block_type' ) ) {
        return;
    }

    fieldforge_register_block_type( [
        'name'            => 'hero',
        'title'           => 'Hero Section',
        'icon'            => 'cover-image',
        'keywords'        => [ 'hero', 'banner', 'header' ],
        'render_template' => get_template_directory() . '/blocks/hero.php',
        'enqueue_style'   => get_template_directory_uri() . '/blocks/hero.css',
        'supports'        => [ 'align' => [ 'full', 'wide' ] ],
    ] );
} );
php
<?php
// blocks/hero.php
// Available variables: $block, $content, $is_preview, $post_id
$heading = get_field( 'heading' );
$bg      = get_field( 'background_image' );

$classes = 'hero-block';
if ( ! empty( $block['className'] ) ) {
    $classes .= ' ' . $block['className'];
}
?>

<div class="<?php echo esc_attr( $classes ); ?>"
     <?php if ( $bg ) : ?>style="background-image: url(<?php echo esc_url( $bg['url'] ); ?>);"<?php endif; ?>>
    <?php if ( $is_preview && ! $heading ) : ?>
        <p class="placeholder">Add a heading to configure this hero block.</p>
    <?php else : ?>
        <h1><?php echo esc_html( $heading ); ?></h1>
        <p><?php the_field( 'subheading' ); ?></p>
    <?php endif; ?>
</div>

render_callback Ejemplo

php
fieldforge_register_block_type( [
    'name'            => 'cta-banner',
    'title'           => 'CTA Banner',
    'icon'            => 'megaphone',
    'render_callback' => 'render_cta_banner_block',
] );

function render_cta_banner_block( $block, $content, $is_preview, $post_id ) {
    $heading = get_field( 'heading' ) ?: 'Get Started Today';
    $color   = get_field( 'background_color' ) ?: '#1a1a2e';
    ?>
    <div class="cta-banner" style="background-color: <?php echo esc_attr( $color ); ?>;">
        <h2><?php echo esc_html( $heading ); ?></h2>
        <a href="<?php the_field( 'button_link' ); ?>" class="cta-btn"><?php the_field( 'button_text' ); ?></a>
    </div>
    <?php
}

Registro de Múltiples Bloques

php
add_action( 'init', function() {
    if ( ! function_exists( 'fieldforge_register_block_type' ) ) {
        return;
    }

    $blocks = [
        [ 'name' => 'testimonial', 'title' => 'Testimonial', 'icon' => 'format-quote' ],
        [ 'name' => 'pricing-table', 'title' => 'Pricing Table', 'icon' => 'money-alt' ],
        [ 'name' => 'team-member', 'title' => 'Team Member', 'icon' => 'admin-users' ],
    ];

    foreach ( $blocks as $b ) {
        $b['render_template'] = get_template_directory() . '/blocks/' . $b['name'] . '.php';
        $b['enqueue_style']   = get_template_directory_uri() . '/blocks/' . $b['name'] . '.css';
        fieldforge_register_block_type( $b );
    }
} );

Asistente de IA de Forge En línea

¡Hola! Soy el asistente de IA de Field Forge. Pregúntame lo que quieras sobre el plugin — configuración, funciones, resolución de problemas o desarrollo.

Ahora mismo
Con la tecnología de Forge AI · Explorar documentación