这段代码用于在用户下载 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
🔐 安全与兼容性