📄 Erphpdown 下载行为钩子(用于 NPS 自动同步案例)

VFX大学 wordpress开发 📄 Erphpdown 下载行为钩子(用于 NPS 自动同步案例)

标签: ,

  • This topic is empty.
正在查看 0 条回复
  • 作者
    帖子
    • #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’, …)

      留出钩子接口,供你在主题/插件中处理


      🛠 如何启用

      1. 将此文件放在 WordPress 可访问的任意位置,例如 /wp-content/nps-hook/erphp-hook.php

      2. 访问方式示例(由下载按钮触发或附加):

      /wp-content/nps-hook/erphp-hook.php?postid=123&index=2
      1. 后台配置允许同步的文章 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 条回复
  • 在下方一键注册,登录后就可以回复啦。