27. PHP Блоки для Gutenberg | Field Forge - Кастомні поля, створені для швидкості
Завантажити Увійти

27. PHP Блоки для Gutenberg

Реєструйте кастомні блоки Gutenberg, які рендеряться на сервері за допомогою PHP шаблонів. Сумісно з acf_register_block_type().

fieldforge_register_block_type( $config )

Підтримуються як fieldforge_register_block_type(), так і acf_register_block_type().

Повна довідка параметрів:
ПараметрТипЗа замовчуваннямОпис
namestringобов’язковийНазва блоку (алфавітно-цифрові символи + дефіси)
titlestring''Заголовок для відображення в вставнику блоку
descriptionstring''Опис у інспекторі блоку
categorystring'fieldforge'Слаг категорії блоку
iconstring'admin-generic'Назва Dashicon
keywordsarray[]Ключові слова для пошуку (макс. 3)
post_typesarray[]Обмежити до конкретних типів постів
modestring'preview''preview', 'edit', 'auto'
alignstring''Вирівнювання за замовчуванням
render_templatestring''Абсолютний шлях до PHP шаблону
render_callbackcallable\nullnullФункція зворотного виклику
enqueue_stylestring''URL CSS файлу
enqueue_scriptstring''URL JS файлу
enqueue_assetscallable\nullnullФункція для підключення ресурсів
supportsarray[]Підтримка блоків WordPress
examplearray[]Дані попереднього перегляду для вставника

приклад render_template

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

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
}

Реєстрація кількох блоків

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 );
    }
} );
Асистент ШІ Forge Онлайн

Привіт! Я асистент ШІ Field Forge. Запитайте мене про будь-що щодо плагіна — налаштування, можливості, усунення несправностей чи розробку.

Щойно
Працює на Forge AI · Переглянути документацію