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

基于ACF用户字段禁用WooCommerce指定配送方式失效求助

问题:ACF用户字段选中后无法隐藏指定WooCommerce配送方式

我通过ACF在用户资料中添加了一个True/False字段,需求是当该字段被选中时隐藏WooCommerce中的特定配送方式。编写了如下代码,但执行后目标配送方式并未被隐藏:

function filter_woocommerce_package_rates( $rates, $package ) {
   
$user_id = get_current_user_id();
$verified=false;
$acf_field=get_user_meta( $user_id, 'fast_shipping', true );
   
    if($acf_field) $verified=true;
   
// Loop trough
foreach ( $rates as $rate_id => $rate ) {
   
    if ( $verified ) {
        unset( $rates['flat_rate:8'] );
    }
}  
return $rates;
}
add_filter( 'woocommerce_package_rates', 'filter_woocommerce_package_rates', 10, 2 );

排查修复方案

1. 确认配送方式ID是否正确

WooCommerce的配送方式ID可能和你写的flat_rate:8不符,先输出当前可用的配送方式ID验证:
修改代码,在循环里添加日志输出:

foreach ( $rates as $rate_id => $rate ) {
    error_log( '配送方式ID: ' . $rate_id ); // 日志会写入wp-content/debug.log
    if ( $verified ) {
        unset( $rates['flat_rate:8'] );
    }
}

开启WP_DEBUG后查看日志,拿到目标配送的真实ID,替换掉代码里的flat_rate:8。

2. 修正ACF字段值判断逻辑

ACF的True/False字段存储值为1(选中)或0(未选中),但get_user_meta可能返回字符串类型,直接判断会有误差,修改验证逻辑:

$acf_field = get_user_meta( $user_id, 'fast_shipping', true );
$verified = (bool)$acf_field; // 强制转为布尔值,确保判断准确

另外注意:未登录用户get_current_user_id()会返回0,此时不会触发隐藏逻辑,若需要针对未登录用户处理,需额外添加判断。

3. 提高过滤器优先级

默认优先级10可能被其他插件或主题的代码覆盖,提高优先级确保你的代码最后执行:

add_filter( 'woocommerce_package_rates', 'filter_woocommerce_package_rates', 99, 2 ); // 将10改为99

4. 清除WooCommerce配送缓存

修改代码后,WooCommerce可能缓存了配送方式,需手动刷新:

  • 进入WooCommerce → 设置 → 配送 → 直接点击保存设置(无需修改任何内容)
  • 刷新前端购物车/结算页面后测试

修复后的完整代码

function filter_woocommerce_package_rates( $rates, $package ) {
    $user_id = get_current_user_id();
    if ( $user_id === 0 ) {
        return $rates; // 未登录用户直接返回原配送方式
    }
    
    $acf_field = get_user_meta( $user_id, 'fast_shipping', true );
    $verified = (bool)$acf_field;

    if ( $verified ) {
        // 替换成你从日志中获取的真实配送方式ID
        $target_rate_id = 'flat_rate:8';
        if ( isset( $rates[$target_rate_id] ) ) {
            unset( $rates[$target_rate_id] );
        }
    }

    return $rates;
}
add_filter( 'woocommerce_package_rates', 'filter_woocommerce_package_rates', 99, 2 );

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:20:27