bernskioldmedia / block-plugin-support
为 WordPress 插件添加区块支持的可重用方式。
Requires
- php: ^7.4|^8.0
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
的参数。