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

如何将前端表单用户选择值传递给WP User Frontend Pro的$billing_amount变量

WordPress WPUF 动态修改投稿费实现方案

实现步骤

1. 前端表单配置

  • 在WPUF创建的投稿表单中,添加你需要的单选/复选框选项,用于用户选择不同的服务等级/附加服务
  • 额外添加一个隐藏字段,字段名可设为custom_calc_fee,无需设置默认值
  • 用JS监听单选/复选框的change事件,根据用户选中的选项实时计算总金额,将计算结果写入上述隐藏字段的value属性即可

2. 后端接收并生效自定义金额

无需修改WPUF插件的原生代码,直接在当前主题的functions.php文件中添加以下代码即可,利用WPUF预留的过滤器动态修改计费金额:

add_filter('wpuf_payment_amount', 'custom_calculate_post_fee', 10, 1);
function custom_calculate_post_fee($original_amount) {
    // 注意:禁止直接使用前端传的金额值,必须后端根据用户提交的选项重新计算,防止恶意篡改
    $final_amount = 0;
    // 示例:根据前端提交的选项计算金额,需替换为你自己的选项对应规则
    // 1. 计算基础投稿费(对应单选框post_level)
    if (isset($_POST['post_level']) && is_numeric($_POST['post_level'])) {
        $level_map = [
            1 => 10, // 普通投稿10元
            2 => 20  // 优质投稿20元
        ];
        $level = intval($_POST['post_level']);
        if (!isset($level_map[$level])) {
            return $original_amount; // 选项非法返回默认金额
        }
        $final_amount += $level_map[$level];
    }
    // 2. 计算附加服务费(对应复选框extra_services)
    if (isset($_POST['extra_services']) && is_array($_POST['extra_services'])) {
        $service_map = [
            'urgent' => 5,   // 加急审核加5元
            'featured' => 15 // 首页推荐加15元
        ];
        foreach ($_POST['extra_services'] as $service) {
            if (isset($service_map[$service])) {
                $final_amount += $service_map[$service];
            }
        }
    }
    // 金额校验合法则返回自定义金额,否则返回插件默认金额
    return $final_amount > 0 ? $final_amount : $original_amount;
}

3. 可选补充校验

如果需要额外保障支付安全,可以在PayPal IPN回调的钩子中再加一层金额校验,避免出现支付金额和订单金额不符的情况,WPUF对应的IPN处理钩子为wpuf_paypal_ipn_processed。

注意事项

  • 所有金额计算逻辑必须放在后端执行,前端JS仅做展示用,不要直接信任前端传的数值,避免用户通过篡改JS代码提交异常金额
  • 代码放在主题functions.php中不会被WPUF插件更新覆盖,比修改插件原生代码兼容性更好

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:39:01