magonxesp / block-autoload
此包已被弃用,且不再维护。未建议任何替代包。
自动加载WordPress区块
v0.1-alpha
2020-02-20 19:00 UTC
Requires
- symfony/filesystem: ^5.0
Requires (Dev)
- advanced-custom-fields/advanced-custom-fields-pro: ^5.8
- johnpbloch/wordpress-core: ^5.3
- timber/timber: ^1.15
This package is auto-updated.
Last update: 2024-07-06 06:00:21 UTC
README
区块自动加载
这是一个简单的区块自动加载器,用于使用面向对象范式定义和自动加载WordPress Gutemberg区块。
警告!此功能目前处于开发中,许多即将推出的功能尚未包含在包中。使用文档将在新的开发版本或预发布版本中更新。
入门指南
设置composer
注意:如果您已经有一个基于composer的WordPress安装或您的主题中已有composer,则可以跳过此步骤。
-
在当前主题中初始化composer
$ cd wp-content/themes/current-theme $ composer init -
在functions.php的第一行要求composer自动加载器以自动加载composer依赖项。
require_once 'vendor/autoload.php';
安装和使用
使用composer安装库
$ composer require magonxesp/block-autoload
创建区块目录和您的第一个区块结构
在您的主题中创建区块目录
$ mkdir blocks
在区块目录内创建您的第一个区块示例
$ cd blocks $ mkdir example $ touch example/Example.php # the block class $ touch example/example.template.php # the block template
定义示例区块类
// example/Example.php namespace YourThemeNamespace\Blocks; use MagonxESP\BlockAutoload\Annotation\Block; use MagonxESP\BlockAutoload\Block\BlockBase; /** * Class Example * * @Block( * name="example", * title="Example", * description="Example block", * icon="", * domain="my-site", * category="custom", * keywords={"keyword1", "keyword2"}, * template="example.template.php" * ) */ class Example extends BlockBase { public $hello; public function setup() { $this->hello = 'Hello wordpress'; } }
向模板添加内容,并使用定义的$context变量访问区块类的公共属性
<!-- example/example.template.php -->
<h1><?php echo $context['hello']; ?></h1>
通过ACF PRO插件区块API自动加载区块
// functions.php use MagonxESP\BlockAutoload\BlockAutoload; use MagonxESP\BlockAutoload\Block\BlockPlugin; add_action('init', function() { // autoload blocks registering them using the ACF PRO Block API (Require ACF PRO plugin installed and activated) $block_autoloader = new BlockAutoload(BlockPlugin::ACF_PRO, __DIR__ . '/blocks'); $block_autoloader->setBlockNamespace('YourThemeNamespace\\Blocks\\'); $block_autoloader->load(); });
即将推出的功能
- 使用区块类属性作为模板变量
- 与WordPress区块API的兼容性(在当前版本中定义,但不起作用)
- 与Twig模板的兼容性(使用Timber插件)
- 使用WordPress过滤器更改渲染输出