pxlrbt/acf-configurator

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

用于在 PHP 中轻松本地配置 ACF 的包装器。

0.3.2 2021-01-23 12:37 UTC

This package is auto-updated.

Last update: 2023-01-31 00:37:00 UTC


README

用于在 PHP 中轻松本地配置高级自定义字段(Advanced Custom Fields)的包装器。

当你想在 PHP 中定义 ACF 组而不是通过数据库时,ACF Configurator 就派上用场了。由于 ACF 的标准配置方式是一个长多维数组,所以很容易变得混乱。ACF Configurator 提供了一种简单、直观的方式来配置 ACF 组和字段。它使用一种简短、面向对象的语法进行配置。

为什么不使用高级自定义字段 GUI?

高级自定义字段插件提供了一个便捷的界面,方便在 WordPress 中管理组和字段。即使客户也可以轻松编辑字段,即使他们对这些了解不多。但通过 PHP 配置有一些优点

  • 不加载数据库。 配置不再存储在数据库中,也不需要在每次页面加载时检索。
  • 将代码和配置耦合在一起。 配置不属于数据库。自定义字段和主题代码库通常紧密耦合。不更新代码而更改字段可能会破坏某些内容。
  • 更容易迁移。 如果需要更新主题,你通常首先在开发环境中测试它。在部署新代码之前,将你做的所有更改转移到你的实时站点可能会破坏某些内容,或者至少是非常烦人的。

安装

通过 Composer 安装此包

composer require pxlrbt/acf-confgurator

使用(示例)

只需导入 ACF Configurator 并开始配置。组类负责注册。

<?php

use pxlrbt\AcfConfigurator\FieldGroup;
use pxlrbt\AcfConfigurator\Condition\Condition;
use pxlrbt\AcfConfigurator\Location\Location;
use pxlrbt\AcfConfigurator\Fields\Email;
use pxlrbt\AcfConfigurator\Fields\Text;
use pxlrbt\AcfConfigurator\Fields\TrueFalse;
use pxlrbt\AcfConfigurator\Fields\Repeater;
use pxlrbt\AcfConfigurator\Fields\Image;

FieldGroup::make('Test group', 'test')
    ->location(function($condition) {
        $condition->if(Location::$PARAM_POST_TEMPLATE, Location::$OPERATOR_EQUALS, 'template.php')
            ->andIf(Location::$PARAM_POST_TYPE, Location::$OPERATOR_EQUALS, 'page');
    })
    ->fields([
        Text::make('Text field', 'text')
            ->placeholder('Placeholder')
            ->required(true),

        TrueFalse::make('Show email?', 'show_email')
            ->select2(true),

        Email::make('Email address', 'email')
            ->condition(function($condition) {
                $condition->if('field_show_email', Condition::$OPERATOR_EQUALS, true);
            })
            ->required(true)
            ->placeholder('your-email@example.com'),

        Repeater::make('Items', 'items')
            ->fields([
                Textfield::make('Description', 'description'),
                Image::make('Image', 'item__image')
                    ->returnFormat(Image::$FORMAT_ID)
            ])
    ])
    ->hide(FieldGroup::$HIDE_EDITOR)
    ->hide(FieldGroup::$HIDE_TRACKBACKS);

替代方案

这个插件不符合你的需求?这里有几种替代方案

贡献

欢迎对这个项目做出贡献。你可以自由地添加非标准字段类型或提出改进建议。