gebruederheitz / wp-meta-fields
无依赖项的助手,用于更快的 WordPress metaboxes 设置。
Requires
- php: >=7.3
- gebruederheitz/simple-singleton: ^1.0
Requires (Dev)
- phpstan/phpstan: ^1.4
- szepeviktor/phpstan-wordpress: ^1.0
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(或替换方案)