Erphpdown 下载行为钩子(用于 NPS 自动同步案例)
› 社区话题 › wordpress开发 › Erphpdown 下载行为钩子(用于 NPS 自动同步案例)
- 该话题为空。
正在查看 0 条回复

- 作者帖子
- 2025年7月29日 - 下午8:44 #843
追光管理员这段代码用于在用户下载 Erphpdown 收费内容时,精准触发 NPS 系统的同步逻辑,并记录日志。不影响原有下载流程,也不会输出任何内容。适合用于自建系统扩展,如:根据用户订单,自动开通 NPS 隧道、客户端配置等。
✅ 使用场景
用户成功下单并开始下载资源时,执行后台逻辑(如配置同步、调用 API 等)
保证仅在 允许同步的文章ID 中执行(防止误触发)
支持多价格文章系统,可通过 index 获取子产品 ID
? 完整代码如下:
<?php header("Content-type:text/html;character=utf-8"); require_once('../../../wp-load.php'); // ✅ 植入 NPS 钩子:不会输出、不影响任何下载逻辑 if (is_user_logged_in()) { $user_id = get_current_user_id(); $post_id = isset($_GET['postid']) ? intval($_GET['postid']) : 0; $price_id = isset($_GET['index']) ? intval($_GET['index']) : 0; // ✅ 获取后台设置的允许同步的文章ID(用英文逗号分隔) $allowed_ids = get_option('nps_allowed_article_ids', ''); $allowed_post_ids = array_filter(array_map('intval', explode(',', $allowed_ids))); $is_allowed = in_array($post_id, $allowed_post_ids, true); // ✅ 构建日志数据 $log_data = [ 'user_id' => $user_id, 'post_id' => $post_id, 'action' => $is_allowed ? 'nps_paid_download' : 'do_action', 'status' => $is_allowed ? 1 : 0, 'message' => $is_allowed ? "✅ 订单下载同步:用户ID={$user_id}, 文章ID={$post_id}, 子产品ID={$price_id}" : "❌ 非授权文章,拒绝同步,用户ID: {$user_id}, 文章ID: {$post_id}, 子产品ID: {$price_id}", ]; // ✅ 写入日志 if (function_exists('nps_log')) { nps_log($log_data); } else { error_log('[NPS] ' . $log_data['message']); } // ✅ 执行 Hook(只对授权文章) if ($is_allowed) { do_action('nps_paid_download', $user_id, $post_id, $price_id); } } ?>
? 核心说明
项目
描述
postid
文章ID,用于判断是否在允许列表中
index
子产品ID,支持多价格文章识别
nps_log()
自定义日志函数,写入系统记录
do_action(‘nps_paid_download’, …)
留出钩子接口,供你在主题/插件中处理
? 如何启用
将此文件放在 WordPress 可访问的任意位置,例如 /wp-content/nps-hook/erphp-hook.php
访问方式示例(由下载按钮触发或附加):
/wp-content/nps-hook/erphp-hook.php?postid=123&index=2
后台配置允许同步的文章 ID,如:
get_option('nps_allowed_article_ids') = '123,124,125'
? 日志样例(自动写入)
成功示例:
✅ 订单下载同步:用户ID=25, 文章ID=123, 子产品ID=2
拒绝示例:
❌ 非授权文章,拒绝同步,用户ID: 25, 文章ID: 99, 子产品ID: 0
? 安全与兼容性
仅登录用户触发
不输出 HTML,不影响下载流程
可任意扩展 do_action(‘nps_paid_download’) 实现
- 作者帖子
正在查看 0 条回复
- 在下方一键注册,登录后就可以回复啦。