wp63/acf-block-loader

用于简化 ACF Gutenberg 块注册的包装类

安装数: 7,342

依赖项: 0

建议者: 0

安全: 0

星标: 6

关注者: 2

分支: 2

公开问题: 0

类型:软件包

v1.3.0 2019-11-25 09:04 UTC

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。

  1. 创建一个扩展 WP63\Block 的类
  2. 类默认命名空间为 WP63\Blocks\
  3. 类必须至少有 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 模板引擎

  1. render() 类方法中,直接输出内容之前,返回一个包含所有要暴露给 Blade 模板文件的数据的数组。
  2. views/blocks 中创建模板文件,文件名必须与块名称($name)相同。例如:views/blocks/hero-banner.blade.php