WordPress 插件开发入门:从 add_action 到 register_activation_hook
摘要
一个能上线的 WP 插件,骨架其实只有四块:头部注释、钩子注册、激活回调、卸载回调。下面按这四块拆。1. 头部注释
一个能上线的 WP 插件,骨架其实只有四块:头部注释、钩子注册、激活回调、卸载回调。下面按这四块拆。
1. 头部注释
<?php
/**
* Plugin Name: My First Plugin
* Description: 演示用插件
* Version: 1.0.0
* Requires at least: 6.0
* Requires PHP: 7.4
* Author: Your Name
*/少了这几行,后台插件列表根本不会列出它。Requires at least 和 Requires PHP 建议写,WP 会据此阻止在过低环境里安装。
2. 挂动作
add_action('init', 'mfp_init');
function mfp_init(){
// 注册自定义文章类型、短代码等
}别在文件顶层直接调用注册函数,那时 WP 还没准备好,很多 API 都没加载。
3. 激活时做的事
register_activation_hook(__FILE__, 'mfp_activate');
function mfp_activate(){
add_option('mfp_version', '1.0.0');
if (! wp_next_scheduled('mfp_daily_event')) {
wp_schedule_event(time(), 'daily', 'mfp_daily_event');
}
}激活回调只在启用时跑一次,适合建自定义表、写默认选项、安排定时任务。
4. 停用时清理
register_deactivation_hook(__FILE__, 'mfp_deactivate');
function mfp_deactivate(){
wp_clear_scheduled_event('mfp_daily_event');
}注意区分:停用(deactivation)可逆,卸载(uninstall)不可逆。删数据这种动作放在 uninstall.php 里,不要放在停用回调里,否则用户临时停一下插件,数据就没了。
最后一句
把插件代码包在学习模型里写,容易漏掉的就是权限检查。凡是处理表单或 AJAX 的函数,第一行必须是 current_user_can() 或 check_ajax_referer(),否则就是一个现成的越权漏洞。
2026年10月20日 14:58
前后30天 · 点日期看归档
9月20日
9月21日
9月22日
9月23日
9月24日
9月25日
9月26日
9月27日
9月28日
9月29日
9月30日
10月1日
10月2日
10月3日
10月4日
10月5日
10月6日
10月7日
10月8日
10月9日
10月10日
10月11日
10月12日
10月13日
10月14日
10月15日
10月16日
10月17日
10月18日
10月19日
10月20日
10月21日
10月22日
10月23日
10月24日
10月25日
10月26日
10月27日
10月28日
10月29日
10月30日
10月31日
11月1日
11月2日
11月3日
11月4日
11月5日
11月6日
11月7日
11月8日
11月9日
11月10日
11月11日
11月12日
11月13日
11月14日
11月15日
11月16日
11月17日
11月18日
11月19日