bernskioldmedia/block-plugin-support

为 WordPress 插件添加区块支持的可重用方式。

2.1.1 2022-05-03 09:51 UTC

This package is auto-updated.

Last update: 2024-09-30 01:37:53 UTC


README

此存储库将进入只读模式

我们已将此 composer 包集成到我们的 wp-plugin-base 中,而不是将其独立保持。

区块插件支持

我们发现自己越来越多地创建了一堆插件,这些插件向区块编辑器添加一个或多个区块。

这需要一些函数来加载和注册。由于我们几乎每次都使用相同的脚手架,将区块部分拆分为库是有意义的。

该库包括一个用于使插件支持区块的简单特质,以及两个用于基本服务器端渲染区块的抽象类。

入门指南

您需要做的所有事情是将 Has_Blocks 特质包含在插件类中,只要您使用的是我们插件基的最新版本,它将自动识别此特质。

区块假定放置在 blocks 子文件夹中,并且它们被构建到 dist/blocks

此特质依赖于插件中使用的自动加载器!

use BernskioldMedia\WP\Block_Plugin_Support\Traits\Has_Blocks;

class My_Plugin {

    use Has_Blocks;

}

定义自定义区块前缀

特质将默认使用 'bm' 前缀。区块以前缀命名,以便将它们限定在它们所属的项目中。这也影响脚本和样式如何注册($prefix-block-$block_name)。

您的项目可能需要其自定义前缀。您可以在主插件类中设置它,如下所示

use BernskioldMedia\WP\Block_Plugin_Support\Traits\Has_Blocks;

class My_Plugin {

    use Has_Blocks;
    
    // Set my custom block prefix.
    protected static string $block_prefix = 'my-prefix';

}

所需文件夹结构

特质假定以下文件夹结构

blocks/ 是所有区块的位置,每个区块一个文件夹。每个区块文件夹中的 index.js 文件是构建脚本的入口点。

dist/blocks 是构建的 JavaScript 区块的存放位置,其文件名与主文件夹名相同。

languages/ 是翻译文件的存放位置。处理程序和域都设置为 {$block_prefix}-{$block_name}

所需方法

特质依赖于两个方法来实现。

  • get_url() 应返回插件目录的 URL。
  • get_path() 应返回插件目录的路径。
  • get_textdomain() 应返回字符串插件文本域。

钩子和过滤器

我们努力使所有代码易于自定义,提供大量的过滤器和钩子,以满足所需。您永远不知道何时或为什么您可能需要那种简单的单一自定义。

由于这是一个 composer 包,过滤器位于“包命名空间”内,并且不继承消费者插件自己的命名结构。

过滤器

bm_block_support_{$BLOCKNAME}_wrapper_args。适用于任何扩展 Block 的动态区块,并且依赖于 Block::$name 被设置在消费动态区块类中。允许您自定义发送到 get_block_wrapper_attributes 的参数。