eighteen73/settings-api
Composer 安装命令:
composer require eighteen73/settings-api
包简介
A helper class for registering WordPress settings pages with a simpler API.
README 文档
README
Allows for easier creation of plugin settings pages by using an object orianted approach, with an API similar to the customizer.
An example
use Eighteen73\SettingsApi\SettingsApi; $settings = new SettingsApi( 'Plugin Settings', 'Plugin Settings', 'manage_options', 'plugin-name', 100, false, // set it to 'true' to create a top level menu '' // icon url to be used on top level menu ); // Submenus: if top level menu is created. $settings->set_submenu( 'Submenu 1', 'Submenu 1', 'plugin-name-submenu', [ $this, 'callback_function' ] ); // Section: Basic Settings. $settings->add_section( [ 'id' => 'plugin_name_basic', 'title' => __( 'Basic Settings', 'plugin-name' ), ] ); // Section: Other Settings. $settings->add_section( [ 'id' => 'plugin_name_other', 'title' => __( 'Other Settings', 'plugin-name' ), ] ); // Field: Text. $settings->add_field( 'plugin_name_basic', [ 'id' => 'text', 'type' => 'text', 'name' => __( 'Text Input', 'plugin-name' ), 'desc' => __( 'Text input description', 'plugin-name' ), 'default' => 'Default Text', ] ); // Field: Number. $settings->add_field( 'plugin_name_basic', [ 'id' => 'text_no', 'type' => 'number', 'name' => __( 'Number Input', 'plugin-name' ), 'desc' => __( 'Number field with validation callback `intval`', 'plugin-name' ), 'default' => 1, 'sanitize_callback' => 'intval', ] ); // Field: Email. $settings->add_field( 'plugin_name_basic', [ 'id' => 'email', 'type' => 'email', 'name' => __( 'Email', 'plugin-name' ), 'desc' => __( 'Email field description', 'plugin-name' ), ] ); // Field: Password. $settings->add_field( 'plugin_name_basic', [ 'id' => 'password', 'type' => 'password', 'name' => __( 'Password Input', 'plugin-name' ), 'desc' => __( 'Password field description', 'plugin-name' ), ] ); // Field: Textarea. $settings->add_field( 'plugin_name_basic', [ 'id' => 'textarea', 'type' => 'textarea', 'name' => __( 'Textarea Input', 'plugin-name' ), 'desc' => __( 'Textarea description', 'plugin-name' ), ] ); // Field: Separator. $settings->add_field( 'plugin_name_basic', [ 'id' => 'separator', 'type' => 'separator', ] ); // Field: Title. $settings->add_field( 'plugin_name_basic', [ 'id' => 'title', 'type' => 'title', 'name' => '<h1>Title</h1>', ] ); // Field: Checkbox. $settings->add_field( 'plugin_name_basic', [ 'id' => 'checkbox', 'type' => 'checkbox', 'name' => __( 'Checkbox', 'plugin-name' ), 'desc' => __( 'Checkbox Label', 'plugin-name' ), ] ); // Field: Radio. $settings->add_field( 'plugin_name_basic', [ 'id' => 'radio', 'type' => 'radio', 'name' => __( 'Radio', 'plugin-name' ), 'desc' => __( 'Radio Button', 'plugin-name' ), 'options' => [ 'yes' => 'Yes', 'no' => 'No', ], ] ); // Field: Multicheck. $settings->add_field( 'plugin_name_basic', [ 'id' => 'multicheck', 'type' => 'multicheck', 'name' => __( 'Multile checkbox', 'plugin-name' ), 'desc' => __( 'Multile checkbox description', 'plugin-name' ), 'options' => [ 'yes' => 'Yes', 'no' => 'No', ], ] ); // Field: Multicheck with descriptions. $settings->add_field( 'plugin_name_basic', [ 'id' => 'multicheck_descriptions', 'type' => 'multicheck', 'name' => __( 'Multile checkbox with descriptions', 'plugin-name' ), 'desc' => __( 'Multile checkbox description', 'plugin-name' ), 'options' => [ 'yes' => [ 'label' => 'Yes', 'desc' => 'Description of option', ], 'no' => [ 'label' => 'No', 'desc' => 'Description of option', ], ], ] ); // Field: Select. $settings->add_field( 'plugin_name_basic', [ 'id' => 'select', 'type' => 'select', 'name' => __( 'A Dropdown', 'plugin-name' ), 'desc' => __( 'A Dropdown description', 'plugin-name' ), 'options' => [ 'yes' => 'Yes', 'no' => 'No', ], ] ); // Field: Image. $settings->add_field( 'plugin_name_other', [ 'id' => 'image', 'type' => 'image', 'name' => __( 'Image', 'plugin-name' ), 'desc' => __( 'Image description', 'plugin-name' ), 'options' => [ 'button_label' => 'Choose Image', ], ] ); // Field: File. $settings->add_field( 'plugin_name_other', [ 'id' => 'file', 'type' => 'file', 'name' => __( 'File', 'plugin-name' ), 'desc' => __( 'File description', 'plugin-name' ), 'options' => [ 'button_label' => 'Choose file', ], ] ); // Field: Color. $settings->add_field( 'plugin_name_other', [ 'id' => 'color', 'type' => 'color', 'name' => __( 'Color', 'plugin-name' ), 'desc' => __( 'Color description', 'plugin-name' ), 'placeholder' => __( '#5F4B8B', 'plugin-name' ), ] ); // Field: WYSIWYG. $settings->add_field( 'plugin_name_other', [ 'id' => 'wysiwyg', 'type' => 'wysiwyg', 'name' => __( 'WP_Editor', 'plugin-name' ), 'desc' => __( 'WP_Editor description', 'plugin-name' ), ] );
Credits
Heavily based on WP-OOP-Settings-API by Ahmad Awais.
eighteen73/settings-api 适用场景与选型建议
eighteen73/settings-api 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 978 次下载、GitHub Stars 达 3, 最近一次更新时间为 2022 年 11 月 24 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 eighteen73/settings-api 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 eighteen73/settings-api 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 978
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 16
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-11-24