PHPackages                             estebanforge/hyperblocks - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. estebanforge/hyperblocks

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

estebanforge/hyperblocks
========================

HyperBlocks: A powerful block library for WordPress with fluent API and field integration.

1.2.3(2w ago)182↑480%1GPL-2.0-or-laterPHPPHP &gt;=8.1

Since Mar 30Pushed 1w agoCompare

[ Source](https://github.com/EstebanForge/HyperBlocks)[ Packagist](https://packagist.org/packages/estebanforge/hyperblocks)[ RSS](/packages/estebanforge-hyperblocks/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (32)Versions (21)Used By (1)

HyperBlocks
===========

[](#hyperblocks)

HyperBlocks is a Composer library for PHP-first Gutenberg block development.

It provides:

- Fluent API block definitions
- `block.json`-compatible registration flow
- Reusable field groups
- REST endpoints for block field discovery and server-side preview
- HyperFields integration (field sanitization, validation, block attributes)

Requirements
------------

[](#requirements)

- PHP 8.2+
- WordPress latest
- `estebanforge/hyperfields` ^1.0 (installed automatically)

Installation
------------

[](#installation)

```
composer require estebanforge/hyperblocks
```

Load your project Composer autoloader:

```
require_once __DIR__ . '/vendor/autoload.php';
```

HyperBlocks bootstrap is registered via Composer `autoload.files`. HyperFields is bootstrapped automatically — no extra configuration needed.

Quick start
-----------

[](#quick-start)

```
use HyperBlocks\Block\Block;
use HyperBlocks\Block\Field;
use HyperBlocks\Registry;

$block = Block::make('Hero Banner')
    ->setName('my-theme/hero-banner')
    ->setIcon('cover-image')
    ->addFields([
        Field::make('text', 'heading', 'Heading')->setDefault('Welcome'),
        Field::make('textarea', 'subheading', 'Subheading'),
        Field::make('image', 'background_image', 'Background Image'),
    ])
    ->setRenderTemplateFile('blocks/hero-banner.hb.php');

Registry::getInstance()->registerFluentBlock($block);
```

Or with the procedural helpers:

```
hyperblocks_register_block(
    hyperblocks_block('Hero Banner')
        ->setName('my-theme/hero-banner')
        ->addFields([
            hyperblocks_field('text', 'heading', 'Heading')->setDefault('Welcome'),
        ])
        ->setRenderTemplateFile('blocks/hero-banner.hb.php')
);
```

Field types
-----------

[](#field-types)

TypeNotes`text`Single-line text`textarea`Multi-line text`email`Email address`url`URL`number`Numeric value`color`Color picker`date`Date`time`Time`datetime`Date + time`image`Attachment ID (integer)`file`File URL or ID`select`Single choice; use `setOptions(['key' => 'Label'])``multiselect`Multiple choices`checkbox`Boolean`radio`Single choice with radio UI`rich_text`Rich text / WYSIWYG`hidden`Hidden value`html`Raw HTML`map`Map embed`oembed`oEmbed URL`separator`Visual separator (no value)`heading`Visual heading (no value)`media_gallery`Multiple media items`repeater`Repeatable field groupTemplates
---------

[](#templates)

Template files use the `.hb.php` extension by default. All block attributes are extracted as PHP variables:

```
// Template for a block with fields: heading (text), bg_image (image)
// $heading and $bg_image are available directly.

$image_url = wp_get_attachment_image_url($bg_image, 'full') ?: '';
?>
