magonxesp/block-autoload

此包已被弃用,且不再维护。未建议任何替代包。

自动加载WordPress区块

v0.1-alpha 2020-02-20 19:00 UTC

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过滤器更改渲染输出