typecho插件开发坑
当年给 Typecho 写插件,文档散、示例少,很多坑是部署到线上才撞上的。下面几条是我反复交学费总结出来的,不算完整教程,但能少踩几个雷。
1. 类名必须以 _Plugin 结尾
插件主类名要叫 Something_Plugin,Something 通常和插件文件夹名一致。
class HelloWorld_Plugin implements Typecho_Plugin_Interface
{
public static function activate() { }
public static function deactivate() { }
public static function config(Typecho_Widget_Helper_Form $form) { }
public static function personalConfig(Typecho_Widget_Helper_Form $form) { }
}
名字不对,后台可能根本识别不到插件,或者激活时报类找不到。改完类名记得文件夹名、文件名、类名三者对齐。
2. 更新时先禁用插件
这是血泪教训:直接覆盖 PHP 文件,有时 OPcache 或旧钩子还在,页面白屏、后台进不去都有见过。
稳妥流程:
- 后台 → 控制台 → 插件 → 先禁用
- 上传/覆盖新版本文件
- 再启用,看激活钩子是否正常
如果已经白屏,只能 FTP 删掉 usr/plugins/你的插件 目录或改文件名,先救站再说。
3. 目录和文件怎么放
标准结构:
usr/plugins/YourPlugin/
Plugin.php # 主类文件,名字随意但习惯叫 Plugin.php
(其他辅助 php、静态资源)
Plugin.php 里 implements Typecho_Plugin_Interface 四个静态方法都要有,哪怕 config 暂时留空。
4. 钩子里别写太重的东西
activate() 适合注册钩子、建表;别在里面跑大 SQL 或远程请求。失败会导致插件无法启用,排查很烦。
持久化配置走 config() 表单,运行期逻辑挂 Typecho_Plugin::factory('...')->... 的 action/filter。
5. 调试习惯
- 本地开
define('__TYPECHO_DEBUG__', true);看报错 - 改完插件先禁用再启用,确认钩子重新注册
- 和主题、其他插件抢同一个 filter 时,注意优先级
Typecho 插件体系不复杂,但命名规范 + 更新流程最容易翻车。先把这两条刻进肌肉记忆,再谈功能花样。
版权声明: 本文首发于 指尖魔法屋-typecho插件开发坑(https://blog.thinkmoon.cn/post/253_typecho%E6%8F%92%E4%BB%B6%E5%BC%80%E5%8F%91%E5%9D%91/) 转载或引用必须申明原指尖魔法屋来源及源地址!