目录结构
usr/plugins/my-plugin/ ├── Plugin.php # 主类(类名 Plugin_my_plugin),静态方法 ├── admin/ # 后台页面(可选) ├── assets/ # 静态资源 └── README.md
Plugin.php 生命周期
class Plugin_my_plugin {
public static function activate() { /* 建表/装选项 */ }
public static function deactivate() { /* 清理(先备份) */ }
public static function init() { /* 注册钩子(可选) */ }
}
插件类名必须为 Plugin_<目录名>;启用/停用时系统调用 activate/deactivate;init 在每次请求插件启用态下调用。
钩子(doHook)
- 全局钩子:
doHook('nav_top')、doHook('footer')、doHook('header')、doHook('home_after')等; - 插件中注册:
addHook('nav_top', function(){ ... });; - 钩子返回字符串会被拼接到对应位置;插件未启用时钩子不注册(热插拔)。
后台菜单注册(规范)
核心导航只放核心功能,插件能力由插件自己注册:
public static function admin_menu_settings() {
// 返回 核心渲染每组菜单时自动 doHook('admin_menu_<组key>') 注入;插件未启用 → 菜单不显示。
双语规范
- 后台 UI 文案用
__('...')词典函数;内容字段英文列名以_en结尾(如 title_en); - 激活时安装英文列,停用时先备份再 DROP(失败中止)。
云端打包发布
php tools/cli_pack.php <插件目录> # 产出 zip + manifest 条目 # 上传到仓库 cloud/ 目录即可被客户端检索安装
RyeBlogRye