wp63 / acf-block-loader
用于简化 ACF Gutenberg 块注册的包装类
v1.3.0
2019-11-25 09:04 UTC
Requires
- php: >=7.1
This package is auto-updated.
Last update: 2024-09-25 21:17:19 UTC
README
用于简化 ACF Gutenberg 块注册的包装类
安装
composer require wp63/acf-block-loader
使用方法
默认情况下,类文件应存储在主题根目录中的 Blocks
目录内(或在 Sage 9 中为 app\Blocks
)。文件名应与类名相同,如 PSR-4。
- 创建一个扩展
WP63\Block
的类 - 类默认命名空间为
WP63\Blocks\
- 类必须至少有 2 个方法:
register()
和静态的render()
<?php namespace App\Blocks; use WP63\Block; class MyBlock extends Block { protected function register() { return [ 'name' => $name, 'title' => $title, 'category' => $category, 'fields' => $fields, ]; } public static function render( $options ) { // You can directly render HTML within `render()` method ... display block html ... // Or alternatively, return an array for Blade template engine in Sage 9 return [ 'name' => 'value', // $name in template file 'foo' => 'bar', // $foo in template file ]; } }
register()
方法将返回一个包含 3 个键的数组
$name
块的唯一名称$title
块标题$category
块类别。预定义类别包括 [ common | formatting | layout | widgets | embed ] (可选)$fields
ACF 字段StoutLogic\AcfBuilder\FieldsBuilder
对象。是FieldsBuilder::build()
方法的输出。
render()
是用于渲染实际块的静态方法。此方法内部生成的所有输出都将成为块 HTML 的一部分。渲染方法将通过 $options
参数从 ACF 获取 4 个回调参数
- 数组
$options->block
块设置和属性。 - 字符串
$options->content
块内部 HTML(为空)。 - 布尔值
$options->is_preview
在 AJAX 预览期间为真。 - 整数|字符串
$options->post_id
此块保存到的帖子 ID。
过滤器
wp63/acf_block_namespace
更改块命名空间。默认:App\Blocks\
wp63/acf_block_directory
更改目录名称。默认:./Blocks
wp63/acf_block_template_directory
更改 Blade 模板目录。相对于/views
目录。默认:blocks
动作
wp63/before_block_render
在每个块渲染之前wp63/before_block_render/{$block_name}
在$block_name
渲染之前wp63/after_block_render
在每个块渲染之后wp63/after_block_render/{$block_name}
在$block_name
渲染之后
在 Sage 9 中使用 Blade 模板引擎
- 在
render()
类方法中,直接输出内容之前,返回一个包含所有要暴露给 Blade 模板文件的数据的数组。 - 在
views/blocks
中创建模板文件,文件名必须与块名称($name
)相同。例如:views/blocks/hero-banner.blade.php