amphibee / acf-blocks
Provide abstracted class to help build ACF-based Gutenberg Blocks
Installs: 7 024
Dependents: 0
Suggesters: 0
Security: 0
Stars: 13
Watchers: 4
Forks: 5
Open Issues: 3
Requires
- php: ^7.4 || ^8.0
- vinkla/extended-acf: ^13.1
Requires (Dev)
- phpunit/phpunit: 9.5.22
- squizlabs/php_codesniffer: 3.7.1
This package is auto-updated.
Last update: 2024-12-21 07:56:02 UTC
README
Quickly declare your Gutenberg blocks with ACF and WordPlate Extended ACF
Requirements
The package requires the following plugins:
- Advanced Custom Fields Pro
- WordPlate Extended ACF (included in the ACF Blocks package)
Installation
Require this package, with Composer, in the root directory of your project.
composer require amphibee/acf-blocks
Usage
Declaring a block
use \AmphiBee\AcfBlocks\Block; use \Extended\ACF\Fields\Text; use \Extended\ACF\Fields\Textarea; Block::make('My beautiful block', 'my_beautiful_block') ->setFields([ Text::make('Title', 'title'), Textarea::make('Content', 'content'), ]) ->disableCustomClasseName() ->setAllowedBlocks([ 'core/paragraph', 'core/heading', ]) ->setJsxTemplate([ ['core/heading', [ 'level' => 2, 'placeholder' => 'Title Goes Here', ]], ['core/paragraph', [ 'placeholder' => 'Content goes here', ]] ]) ->loadAllFields() ->setMode('edit') ->setIcon('format-aside') ->setAlign('full') ->enableJsx() ->setRenderTemplate('partials/my-beautiful-block.php');
ACF Blocks is also compatible with Blade views !
use \AmphiBee\AcfBlocks\Block; use \Extended\ACF\Fields\Text; use \Extended\ACF\Fields\Textarea; Block::make('My beautiful block', 'my_beautiful_block') ->setFields([ \Extended\ACF\Fields\Text::make('Title', 'title'), \Extended\ACF\Fields\Textarea::make('Content', 'content'), ]) ->setMode('preview') ->setIcon('editor-code') ->setAlign('wide') ->enableJsx() ->setView('partials.my-beautiful-block', [ 'key' => 'value', ]);
Rendering a block
Raw PHP template
<div class="p-4"> <?php var_dump($viewData); ?> <h1><?php echo $field->title; ?></h1> <p><?php echo $field->content; ?></p> <?php echo $innerBlocks ?> </div>
Blade view
<div class="p-4"> <h1>{{$field->title}}</h1> <p>{{$field->content}}</p> <p>{{$viewData['key']}}</p> {!! $innerBlocks !!} </div>
Declaring a category
use \AmphiBee\AcfBlocks\BlockCategory; BlockCategory::make('My beautiful category', 'my_beautiful_category') ->setIcon('wordpress')