All Projects → micropackage → block-loader

micropackage / block-loader

Licence: GPL-3.0 license
Automatic WordPress Gutenberg block loader based on template files

Programming Languages

PHP
23972 projects - #3 most used programming language

Projects that are alternatives of or similar to block-loader

filesystem
Wrapper for WordPress' Filesystem for easier file manipulations
Stars: ✭ 19 (-9.52%)
Mutual labels:  composer-library, micropackage, bracketspace
dochooks
WordPress hooks in method comments. Annotated hooks.
Stars: ✭ 33 (+57.14%)
Mutual labels:  composer-library, micropackage, bracketspace
requirements
Requirements checker for WordPress plugins
Stars: ✭ 37 (+76.19%)
Mutual labels:  composer-library, micropackage
cache
WordPress cache wrapper
Stars: ✭ 13 (-38.1%)
Mutual labels:  composer-library, micropackage
ACF-Auto-Blocks
Auto-register ACF field groups as blocks in the new editor (Gutenberg).
Stars: ✭ 28 (+33.33%)
Mutual labels:  acf, gutenberg
disable-drop-cap
Plugin to disable drop cap in Gutenberg editor paragraph block.
Stars: ✭ 11 (-47.62%)
Mutual labels:  gutenberg
tei2html
XSLT stylesheets to convert TEI to HTML and ePub format.
Stars: ✭ 29 (+38.1%)
Mutual labels:  gutenberg
slotfill-and-filter-demos
This repo can be used as reference or can be installed as a plugin in any WordPress install to make code changes as needed. Each SlotFill or filter is explained with examples. This is meant to be a working document and will change as Gutenberg does.
Stars: ✭ 93 (+342.86%)
Mutual labels:  gutenberg
gutenberg
Scraper for downloading the entire ebooks repository of project Gutenberg
Stars: ✭ 100 (+376.19%)
Mutual labels:  gutenberg
wp-block-description-list
A wordpress gutenberg block plugin for description lists.
Stars: ✭ 17 (-19.05%)
Mutual labels:  gutenberg
Gutenberg
Gutenberg for October CMS
Stars: ✭ 52 (+147.62%)
Mutual labels:  gutenberg
acf-typography
A Typography Add-on for the Advanced Custom Fields Plugin
Stars: ✭ 14 (-33.33%)
Mutual labels:  acf
block-navigation
Sidebar with the current post blocks and some tools to facilitate the editing process in the Gutenberg editor.
Stars: ✭ 16 (-23.81%)
Mutual labels:  gutenberg
acf-code-field
WordPress ACF Plugin to add a Codemirror powered field
Stars: ✭ 34 (+61.9%)
Mutual labels:  acf
acf-field-boilerplate
Modernized PSR-2 boilerplate for creating custom fields for ACF5.
Stars: ✭ 54 (+157.14%)
Mutual labels:  acf
acf-field-group-composer
Configuration builder for advanced custom fields field groups
Stars: ✭ 37 (+76.19%)
Mutual labels:  acf
flexible-templates
Allows saving templates of the "Flexible Content" field, for easy and fast use of them on other pages.
Stars: ✭ 36 (+71.43%)
Mutual labels:  acf
acf-openstreetmap-field
WordPress ACF Field for OpenStreetMap
Stars: ✭ 88 (+319.05%)
Mutual labels:  acf
icon-block
A simple little WordPress block that allows you add an SVG icon or graphic to your website.
Stars: ✭ 24 (+14.29%)
Mutual labels:  gutenberg
gumponents
Essential Gutenberg components for WordPress.
Stars: ✭ 29 (+38.1%)
Mutual labels:  gutenberg

Block Loader

BracketSpace Micropackage Latest Stable Version PHP from Packagist Total Downloads License

Micropackage logo

Requires WordPress >=5.8.0.

🧬 About Block Loader

Block Loader loads the Gutenberg Block configuration directly out of the block template file. It parses the file header comment figuring out hwo to register the Block.

Basically instead doing this:

acf_register_block_type( [
	'name'              => 'sample-block',
	'title'             => __('Sample Block'),
	'render_template'   => 'blocks/sample-block.php',
] );

You can do initialize the loader once:

Micropackage\BlockLoader\BlockLoader::init( [
	'dir' => 'blocks',
] );

And define the block config directly in the template (blocks/sample-block.php):

<?php
/**
 * Block Name: Sample Block
 */

...

Supported plugins:

  • Advanced Custom Fields
  • Meta Box

This micropackage is compatible with ACF Block Creator which can create the block templates for you while defining the Field group for your new block.

💾 Installation

composer require micropackage/block-loader

🕹 Usage

Before you can start creating blocks you need to initiate the block loader passing optional config array:

Micropackage\BlockLoader\BlockLoader::init( [
	'dir'        => 'blocks',
	'categories' => [],
	'wrap'       => '<div id="%3$s" class="%2$s">%1$s</div>', // ACF only
] );

Blocks are based on the template files located by default in blocks folder in your theme (you can change that).

There are two steps to create a block:

  1. Create block template file in the blocks folder
  2. Define custom fields for your block using ACF or Meta Box.

Block template file needs to have a comment header containing block parameters.

<?php
/**
 * Block Name: (required)
 * Description:
 * Category:
 * Icon:
 * Keywords: (comma-separated)
 * Post Types: 	(comma-separated, ACF only)
 * Mode: (ACF only)
 * Align: (ACF only)
 * Enqueue Style:
 * Enqueue Script:
 * Enqueue Assets:
 * Supports Align: (comma-separated)
 * Supports Anchor: (true|false)
 * Supports Custom Class Name: (true|false)
 * Supports Mode: (true|false, ACF only)
 * Supports Multiple: (true|false)
 * Supports Reusable: (true|false)
 */

ACF

Creating template files is enough for ACF to register blocks. After that you only need to create new fields group and set it's location to your custom block.

Meta Box

In Meta Box you need "MB Blocks" extension to work with blocks. With this plugin custom fields are defined in code. You need to use rwmb_meta_boxes filter to create metabox for your block.

Let's say you have a template called blocks/some-block.php. You need to add the fields definition like this:

add_filter( 'rwmb_meta_boxes', function( $meta_boxes ) {
	$meta_boxes[] = [
		'id'     => 'some-block',
		'type'   => 'block',
		'fields' => [
			// ...fields configuration
		],
	];

	return $meta_boxes;
} );

All block parameters will be fetched from template header comment and merged with your fields configuration.

⚙️ Configuration

All parameters are optional.

Parameter Type Description
dir (string) This is a directory within your theme where block templates are located. Relative path.
Default: 'blocks'
categories (array) Array of custom block categories passed directly to block_categories_all filter.
If only one category will be configured, it will be used as default category for all custom blocks.
Default: [] (empty array)
wrap (false|string) Wrapper to each block. If set to false, the block content will be just the template file content.
Works only for ACF due to the differences in block rendering mechanisms.
Default: '<div id="%3$s" class="%2$s">%1$s</div>'
...$block_creator_params - Additional parameters passed to ACF Block Creator

Categories definition

This is how to define the categories array.

	...
	'categories' => [
		[
			'slug'  => 'custom-cat',
			'title' => __( 'Custom Category', 'textdomain' ),
			'icon'  => 'book-alt',
		],
		...
	],
	...

Wrap template

Parameters used in internal sprintf:

  1. block content from template file, which should be wrapped
  2. block classes string
  3. unique block id

Example: '<div id="%3$s" class="%2$s">%1$s</div>'

📦 About the Micropackage project

Micropackages - as the name suggests - are micro packages with a tiny bit of reusable code, helpful particularly in WordPress development.

The aim is to have multiple packages which can be put together to create something bigger by defining only the structure.

Micropackages are maintained by BracketSpace.

📖 Changelog

See the changelog file.

📃 License

GNU General Public License (GPL) v3.0. See the LICENSE file for more information.

© Credits

The Loader engine is based on the palmiak's Timber ACF WP Blocks.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].