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

如何根据ACF字段选择结果为WooCommerce添加固定结算费用

功能实现方案

你可以通过WooCommerce原生钩子结合ACF字段取值来实现该需求,操作步骤如下:

  • 第一步先在ACF字段管理后台开启「显示字段键」配置,记录你两个自定义字段对应的字段键(格式为field_xxxxxx),后续代码需要替换为你实际的字段键。
  • 把以下PHP代码添加到当前WordPress主题的functions.php文件,或者自定义功能插件的代码文件中:
add_action('woocommerce_cart_calculate_fees', 'add_office1_night_surcharge', 10, 1);
function add_office1_night_surcharge($cart) {
    // 跳过后台非AJAX请求
    if (is_admin() && !defined('DOING_AJAX')) {
        return;
    }
    // 替换为你Office选择字段的实际字段键
    $selected_office = isset($_POST['acf']['field_替换为Office字段键']) ? sanitize_text_field($_POST['acf']['field_替换为Office字段键']) : '';
    // 替换为你时间段选择字段的实际字段键
    $selected_time = isset($_POST['acf']['field_替换为时间段字段键']) ? sanitize_text_field($_POST['acf']['field_替换为时间段字段键']) : '';

    // 条件匹配时添加固定费用,示例费用为25元,可自行修改金额、费用名称
    if ($selected_office === 'Office 1' && $selected_time === '00:00 - 07:00') {
        $cart->add_fee('凌晨时段附加费', 25, false);
    }
}
  • 若需要用户修改选项后结算费用实时更新,添加以下JS代码到主题的自定义JS文件中:
jQuery(document).ready(function($){
    // 替换为你两个ACF字段对应的表单选择器
    $('select[name="acf[field_替换为Office字段键]"], select[name="acf[field_替换为时间段字段键]"]').on('change', function(){
        // 触发WooCommerce结算信息更新
        $(document.body).trigger('update_checkout');
    });
});
  • 如果你已经提前将用户的选择存储到WooCommerce会话中,可直接将PHP代码中的取值逻辑替换为WC()->session->get('你存储的键名')即可,无需从POST请求读取参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:27:03