micropackage / block-loader
块加载器 - 从模板文件自动创建 Gutenberg 块。
Requires
- php: >=5.6
- micropackage/dochooks: ^1.0
- micropackage/filesystem: ^1.1
- micropackage/singleton: ^1.1
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-20 00:28:14 UTC
README
需要 WordPress >=5.8.0。
🧬 关于块加载器
块加载器直接从块模板文件加载 Gutenberg 块配置。它解析文件头注释,找出如何注册块。
基本上,你可以这样做
acf_register_block_type( [ 'name' => 'sample-block', 'title' => __('Sample Block'), 'render_template' => 'blocks/sample-block.php', ] );
只需初始化加载器一次
Micropackage\BlockLoader\BlockLoader::init( [ 'dir' => 'blocks', ] );
并在模板中直接定义块配置(blocks/sample-block.php
)
<?php
/**
* Block Name: Sample Block
*/
...
支持的插件
- 高级定制字段
- 元框
此微包与 ACF 块创建器 兼容,后者可以在定义新块的字段组时为您创建块模板。
💾 安装
composer require micropackage/block-loader
🕹 使用
在您开始创建块之前,您需要传递可选的配置数组来初始化块加载器
Micropackage\BlockLoader\BlockLoader::init( [ 'dir' => 'blocks', 'categories' => [], 'wrap' => '<div id="%3$s" class="%2$s">%1$s</div>', // ACF only ] );
块基于默认位于您的主题 blocks
文件夹中的模板文件(您可以更改此位置)。
创建块有两个步骤
- 在
blocks
文件夹中创建块模板文件 - 使用 ACF 或元框定义您块的自定义字段。
块模板文件需要包含包含块参数的注释头。
<?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
创建模板文件足以让 ACF 注册块。之后,您只需创建新的字段组并将其位置设置为自定义块。
元框
在元框中,您需要“MB 块”扩展来与块一起工作。使用此插件,自定义字段在代码中定义。您需要使用 rwmb_meta_boxes
过滤器为您的块创建元框。
假设您有一个名为 blocks/some-block.php
的模板。您需要添加如下字段定义
add_filter( 'rwmb_meta_boxes', function( $meta_boxes ) { $meta_boxes[] = [ 'id' => 'some-block', 'type' => 'block', 'fields' => [ // ...fields configuration ], ]; return $meta_boxes; } );
所有块参数都将从模板头注释中提取,并与您的字段配置合并。
⚙️ 配置
所有参数都是可选的。
分类定义
这是定义分类数组的方法。
... 'categories' => [ [ 'slug' => 'custom-cat', 'title' => __( 'Custom Category', 'textdomain' ), 'icon' => 'book-alt', ], ... ], ...
包装模板
在内部 sprintf
中使用的参数
- 来自模板文件的块内容,应该被包装
- 块类字符串
- 唯一的块 ID
示例:'<div id="%3$s" class="%2$s">%1$s</div>'
📦 关于微包项目
微包 - 如其名所示 - 是带有少量可重用代码的微包,特别是在 WordPress 开发中非常有用。
目标是拥有多个包,可以将它们组合在一起来创建更大的东西,只需定义结构。
微包由 BracketSpace 维护。
📖 变更日志
📃 许可证
GNU 通用公共许可证 (GPL) v3.0。有关更多信息,请参阅 LICENSE 文件。
© 致谢
加载器引擎基于 palmiak 的 Timber ACF WP Blocks。