kaiseki/wp-theme-json
Composer 安装命令:
composer require kaiseki/wp-theme-json
包简介
Type-safe builder for WordPress theme.json settings, styles and block styles, wired through a PSR-11 container
README 文档
README
Type-safe builder for WordPress theme.json settings, styles and block styles, wired through a
PSR-11 container.
Instead of hand-editing a theme.json file, you describe the theme settings and styles as typed
PHP data objects (spatie/laravel-data) and let three
kaiseki/wp-hook HookProviderInterfaces push them into WordPress at runtime:
ThemeJsonUpdater— merges aThemeJsonInterfaceprovider'ssettings/stylesinto the global theme data (thewp_theme_json_data_themefilter).BlockSettingsFilter— applies per-block settings (keyed by block name) supplied byBlockSettingsInterfaceimplementations.BlockStylesRegistry— registers custom block styles (register_block_style) oninit.
Installation
composer require kaiseki/wp-theme-json
Requires PHP 8.2 or newer.
Usage
Register ConfigProvider with your laminas-style config aggregator, point theme_json.theme at your
ThemeJsonInterface implementation, and activate the providers you want via kaiseki/wp-hook.
use Kaiseki\WordPress\ThemeJson\BlockSettingsFilter; use Kaiseki\WordPress\ThemeJson\BlockStyleProperties; use Kaiseki\WordPress\ThemeJson\BlockStylesRegistry; use Kaiseki\WordPress\ThemeJson\ThemeJsonUpdater; return [ 'theme_json' => [ // A service id resolving to a ThemeJsonInterface implementation. 'theme' => MyThemeJson::class, // Per-block settings: block name => BlockSettingsInterface service id. 'block_settings' => [ // 'core/button' => MyButtonSettings::class, ], // Custom block styles: block name => list of BlockStyleProperties. 'block_styles' => [ 'core/button' => [ BlockStyleProperties::create( name: 'fill', label: 'Fill', isDefault: true, ), ], ], ], 'hook' => [ 'provider' => [ ThemeJsonUpdater::class, BlockSettingsFilter::class, BlockStylesRegistry::class, ], ], ];
Your ThemeJsonInterface implementation returns the typed settings and styles objects:
use Kaiseki\WordPress\ThemeJson\Settings\Color; use Kaiseki\WordPress\ThemeJson\Settings\Color\Palette; use Kaiseki\WordPress\ThemeJson\Settings\ThemeSettings; use Kaiseki\WordPress\ThemeJson\Styles\ThemeStyles; use Kaiseki\WordPress\ThemeJson\ThemeJsonInterface; final class MyThemeJson implements ThemeJsonInterface { public function getThemeSettings(): ?ThemeSettings { return new ThemeSettings( color: new Color( palette: [ new Palette(slug: 'primary', color: '#0d6efd', name: 'Primary'), new Palette(slug: 'dark', color: '#212529', name: 'Dark'), ], ), ); } public function getThemeStyles(): ?ThemeStyles { return new ThemeStyles(css: 'body{line-height:1.6}'); } }
Null properties are stripped before the data is written, so you only declare the keys you actually set.
ConfigProvider::__invoke() returns the factory wiring for all three providers.
Development
composer install
composer check # check-deps, cs-check, phpstan
License
MIT — see LICENSE.
kaiseki/wp-theme-json 适用场景与选型建议
kaiseki/wp-theme-json 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 158 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 05 月 08 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 kaiseki/wp-theme-json 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 kaiseki/wp-theme-json 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 158
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 5
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-05-08