
作为一名WordPress开发者,尤其是当项目规模逐渐增大,需要大量使用Advanced Custom Fields (ACF) 来构建自定义内容时,我经常会遇到以下痛点:
trueFalse、select)都需要反复设置 ['ui' => 1] 等选项,这是一种不必要的重复。我一直在寻找一种更优雅、更高效的方式来管理ACF,让它能更好地融入到我基于Sage 10和Acorn的现代化WordPress开发工作流中。我希望能够像编写其他PHP代码一样,通过代码来定义和管理ACF的一切。
log1x/acf-composer:ACF 开发的革命性解决方案就在我几乎要放弃手动配置的“不归路”时,我发现了 log1x/acf-composer。这个 Composer 包简直是为 Sage 10 和 ACF Pro 量身定制的利器,它将 ACF Builder 的强大功能与 Sage 10 的现代化开发理念完美结合,彻底解决了上述所有痛点。
log1x/acf-composer 的核心思想是:用代码定义 ACF,用命令行管理 ACF。 它鼓励开发者以结构化的方式创建字段、区块、小工具和选项页面,并通过强大的 CLI 工具快速生成骨架代码,大大提升了开发效率。
安装过程非常简单,只需一行 Composer 命令:
<code class="bash">composer require log1x/acf-composer</code>
安装完成后,我们还需要发布其配置文件,以便进行全局设置:
<code class="bash">wp acorn vendor:publish --tag="acf-composer"</code>
log1x/acf-composer 提供了丰富的功能,让 ACF 开发变得前所未有的流畅。
告别后台的繁琐点击,现在我们可以通过命令行快速生成字段组的骨架:
<code class="bash">wp acorn acf:field ExampleField</code>
这会在 src/Fields/ 目录下生成 ExampleField.php 文件,内容如下:
<pre class="brush:php;toolbar:false;"><?php
namespace App\Fields;
use Log1x\AcfComposer\Builder;
use Log1x\AcfComposer\Field;
class ExampleField extends Field
{
    /**
     * The field group.
     *
     * @return array
     */
    public function fields()
    {
        $fields = Builder::make('example_field');
        $fields
            ->setLocation('post_type', '==', 'post'); // 设置字段组位置
        $fields
            ->addRepeater('items') // 添加一个中继器字段
                ->addText('item') // 中继器中包含一个文本字段
            ->endRepeater();
        return $fields->build();
    }
}通过这种方式,我们可以清晰地看到字段组的结构,并且所有定义都在代码中,便于版本控制和团队协作。
如果多个字段组需要使用相同的字段集合,我们可以创建字段片段来复用它们。例如,创建一个 ListItems 片段:
<code class="bash">wp acorn acf:partial ListItems</code>
生成的 src/Fields/Partials/ListItems.php:
<pre class="brush:php;toolbar:false;"><?php
namespace App\Fields\Partials;
use Log1x\AcfComposer\Builder;
use Log1x\AcfComposer\Partial;
class ListItems extends Partial
{
    /**
     * The partial field group.
     *
     * @return array
     */
    public function fields()
    {
        $fields = Builder::make('listItems');
        $fields
            ->addRepeater('items')
                ->addText('item')
            ->endRepeater();
        return $fields; // 注意这里返回的是 Builder 实例,而不是 build() 后的数组
    }
}然后在 ExampleField 中引入这个片段:
<pre class="brush:php;toolbar:false;"><?php
namespace App\Fields;
use App\Fields\Partials\ListItems; // 引入片段
use Log1x\AcfComposer\Builder;
use Log1x\AcfComposer\Field;
class Example extends Field
{
    public function fields()
    {
        $fields = Builder::make('example');
        $fields
            ->setLocation('post_type', '==', 'post');
        $fields
            ->addPartial(ListItems::class); // 使用片段
        return $fields->build();
    }
}这大大提高了代码的复用性和可维护性。
log1x/acf-composer 让创建古腾堡区块变得轻而易举,并且完美支持 Sage 10 的 Blade 模板引擎。
<code class="bash">wp acorn acf:block ExampleBlock</code>
这会生成 src/Blocks/ExampleBlock.php 和 resources/views/blocks/example-block.blade.php。
ExampleBlock.php 示例:
<pre class="brush:php;toolbar:false;"><?php
namespace App\Blocks;
use Log1x\AcfComposer\Block;
use Log1x\AcfComposer\Builder;
class ExampleBlock extends Block
{
    public $name = 'Example Block';
    public $description = 'Lorem ipsum...';
    public $category = 'common';
    public $icon = 'star-half';
    public function with()
    {
        return [
            'items' => $this->items(),
        ];
    }
    public function fields()
    {
        $fields = Builder::make('example_block');
        $fields
            ->addRepeater('items')
                ->addText('item')
            ->endRepeater();
        return $fields->build();
    }
    public function items()
    {
        return get_field('items') ?: [];
    }
}example-block.blade.php 示例:
<pre class="brush:php;toolbar:false;">@if ($items)
  <ul>
    @foreach ($items as $item)
      <li>{{ $item['item'] }}</li>
    @endforeach
  </ul>
@else
  <p>No items found!</p>
@endifwith() 方法允许你将数据传递给 Blade 视图,使得区块的渲染逻辑清晰且强大。
对于包含大量自定义区块和字段组的项目,性能优化至关重要。log1x/acf-composer 提供了缓存功能,可以将注册的区块缓存到原生的 block.json 文件,并将字段组缓存到 JSON 清单文件中。这可以显著提升 WordPress 后台编辑器和前端的加载速度。
在部署时运行:
<code class="bash">wp acorn acf:cache</code>
清除缓存:
<code class="bash">wp acorn acf:clear</code>
在 config/acf.php 配置文件中,我们可以定义全局的默认字段类型设置,避免重复代码。例如,让所有 trueFalse 和 select 字段默认启用 UI 模式:
<pre class="brush:php;toolbar:false;">// config/acf.php
'defaults' => [
    'trueFalse' => ['ui' => 1],
    'select' => ['ui' => 1],
    'repeater' => ['layout' => 'block', 'acfe_repeater_stylised_button' => 1], // 甚至可以设置 ACF Extended 的默认值
],这大大减少了字段定义时的冗余代码。
log1x/acf-composer 彻底改变了我处理 WordPress ACF 的方式。它的优势和实际应用效果显而易见:
如果你正在使用 Sage 10 和 ACF Pro 构建 WordPress 项目,并且厌倦了手动配置和版本控制的烦恼,那么 log1x/acf-composer 绝对是你的不二之选。它不仅能让你的开发流程更加现代化和高效,还能大大提升项目的可维护性和性能。强烈推荐所有现代化 WordPress 开发者尝试!
以上就是告别繁琐!如何使用log1x/acf-composer优雅构建WordPressACF字段、区块与页面的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                 
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                            Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号