You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress中可用于追踪插件简单变更的函数或hook有哪些?

WordPress轻量插件变更追踪实现方案

核心可用原生Hook

WordPress原生提供了插件全生命周期的触发钩子,无需额外依赖:

  • activated_plugin:插件启用完成后触发,回调可获取插件主文件路径、是否网络激活两个参数
  • deactivated_plugin:插件停用完成后触发,参数同上
  • delete_plugin:插件删除执行前触发,回调可获取待删除插件的主文件路径
  • upgrader_process_complete:更新流程完成后触发,需判断更新类型为plugin即可捕获插件更新操作

实现逻辑(完全匹配需求)

1. 注册存储日志的自定义文章类型(CPT)

直接用WordPress原生CPT存储日志,无需额外创建数据库表,天然支持后台列表展示,可关闭公开访问权限仅后台可见,示例注册代码:

add_action('init', function() {
    register_post_type('plugin_change_log', [
        'labels' => ['name' => '插件变更日志', 'singular_name' => '变更日志'],
        'public' => false,
        'show_ui' => true,
        'show_in_menu' => true,
        'supports' => ['title', 'editor'],
        'capability_type' => 'post',
        'capabilities' => ['create_posts' => 'do_not_allow'], // 禁止手动新建日志
    ]);
});

2. 封装统一日志写入函数

写一个通用函数处理日志写入逻辑,自动将插件路径转换为插件名称,写入CPT记录:

function write_plugin_log($plugin_file, $action_type) {
    // 获取插件详情
    $plugin_data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin_file);
    $plugin_name = $plugin_data['Name'] ? $plugin_data['Name'] : $plugin_file;
    // 插入日志
    wp_insert_post([
        'post_type' => 'plugin_change_log',
        'post_title' => sprintf('%s:%s', $plugin_name, $action_type),
        'post_content' => sprintf('插件版本:%s', $plugin_data['Version']),
        'post_status' => 'publish',
        'post_date' => current_time('mysql'),
    ]);
}

3. 绑定钩子触发日志记录

给四个核心钩子绑定回调,分别对应四种操作类型:

// 插件启用
add_action('activated_plugin', function($plugin_file) {
    write_plugin_log($plugin_file, '启用');
});
// 插件停用
add_action('deactivated_plugin', function($plugin_file) {
    write_plugin_log($plugin_file, '停用');
});
// 插件删除
add_action('delete_plugin', function($plugin_file) {
    write_plugin_log($plugin_file, '删除');
});
// 插件更新
add_action('upgrader_process_complete', function($upgrader, $options) {
    if ($options['type'] === 'plugin' && isset($options['plugins'])) {
        foreach ($options['plugins'] as $plugin_file) {
            write_plugin_log($plugin_file, '更新');
        }
    }
}, 10, 2);

4. 可选优化:调整后台日志列表展示

可以通过后台列表钩子自定义列,直接展示变更类型、插件版本等信息,不用点击进详情查看,对应钩子为manage_plugin_change_log_posts_columns和manage_plugin_change_log_posts_custom_column,按需开发即可。

内容的提问来源于stack exchange,提问作者Vit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 07:36:01