gebruederheitz/wp-meta-fields

无依赖项的助手,用于更快的 WordPress metaboxes 设置。

v1.6.0 2024-01-15 11:30 UTC

README

无依赖项的助手,用于更快的 WordPress metaboxes 设置。

安装

通过 composer

> composer require gebruederheitz/wp-meta-fields

确保您有 Composer 自动加载或替代类加载器。

用法

在 WP 管理后端任何需要渲染 "metaboxes" 或编辑器输入字段的地方使用这些助手。

WP-Meta-Fields 无前端依赖项 - 无额外的样式表或客户端脚本,这可能会在安装时引起问题。然而,这也意味着它不包含诸如异步搜索、验证或各种输入类型的华丽样式等华丽功能。它仅提供了一个直观的界面来创建 DRY 代码,以便创建 metaboxes。

use Gebruederheitz\Wordpress\MetaFields\MetaForms;

function render($value) 
{
    // Use the "render{$type}" static methods:
    MetaForms::renderTextInputField('ghwp_favourite_color', $value, 'Favourite color');
    // ...or the more verbose "make{$type}" methods, which support chaining:
    MetaForms::makeTextInputField()
        ->setName('ghwp_favourite_food')
        ->setValue($value)
        ->setLabel('Your favourite food')
        ->render();
}

标签 i18n

标签将使用 WordPress 的 __() 国际化函数自动翻译。默认情况下,应用命名空间 "ghwp"。要自定义此文本域,请在单例上调用其中一个设置方法

MetaForms::updateTextDomain('my-textdomain');
// or
MetaForms::getInstance()->setTextDomain('my-textdomain');

输入 API

所有字段至少需要设置一个名称属性(如下面每种类型所述),否则将抛出 InvalidFieldConfigurationException

TextInput

用于渲染常规文本输入字段。

MetaForms::renderTextInputField(string $name, string $label, $value = '', bool $required = false)

NumberInput

用于渲染 <input type="number" />

MetaForms::renderNumberInputField()

TextInput 相同

TextArea

渲染 <textarea>

MetaForms::renderTextArea()

TextInput 相同

MediaPicker

渲染 WordPress 媒体选择器所需的输入,并预览当前选中的媒体。

为此,请确保 WP 媒体脚本已排队。如果您使用 gebruederheitz/wp-easy-cpt,可以通过在您的 PostType 实现上设置 protected $withMedia = true; 来轻松实现。否则,您需要在适当的动作钩子上添加回调。

class UsesMetaForms
{
    public function __construct() 
    {
        add_action('admin_enqueue_scripts', [$this, 'onAdminEnqueueScripts']);
    }
    
    public function onAdminEnqueueScripts()
    {
        wp_enqueue_media();
    }
}
MetaForms::renderMediaPicker()

使用自定义模板

您可以在主题根目录中的 template-parts/meta/forms/ 下放置一个具有正确名称的模板文件来覆盖默认模板。

自定义模板覆盖位置

如果您想使用自定义位置(而不是 template-parts/meta/forms/),您可以使用单例的设置方法之一提供自己的覆盖基本路径。您不能更改模板文件名。

// Make sure to end with a trailing slash
MetaForms::updateOverridePath('partials/vendor/gebruederheitz/meta-forms/override/')
// or
MetaForms::getInstance()->setOverridePath('partials/vendor/gebruederheitz/meta-forms/override/');

开发

依赖项

  • PHP >= 7.4
  • Composer 2.x
  • NVM 和 nodeJS LTS (v16.x)
  • 加分项:GNU Make(或替换方案)