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

如何在WordPress主题文件中编写apply_filter获取WooCommerce可变产品最低价

为可变产品最低价格添加自定义过滤器(apply_filter)

首先,你需要把直接获取的可变产品最低价格包装到apply_filters()中,这样就能创建一个可被其他代码修改的扩展钩子。下面是针对你现有代码的修改方案:

修改后的完整代码

add_filter('woocommerce_available_payment_gateways', 'conditional_payment_gateways', 10, 1);
function conditional_payment_gateways( $available_gateways ) {
    foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
        // 获取WC_Product对象
        $product = wc_get_product($cart_item['product_id']);
        // 仅针对可变产品
        if($product->is_type('variable')){
            // 获取原始可变产品最低价格,并通过自定义过滤器开放修改
            $original_min_price = $product->get_variation_price('min');
            $variation_min_price = apply_filters( 'custom_variable_product_min_price', $original_min_price, $product );
            
            // 若产品分类与可变产品最低价匹配
            if( has_term( $variation_min_price, 'product_cat', $cart_item['product_id'] ) ){
                // 货到付款(COD)支付网关
                unset($available_gateways['cod']); // 移除COD网关
                break; // 终止循环
            }
        }
    }
    return $available_gateways;
}

关键部分解释

  1. 自定义过滤器钩子的创建:apply_filters( 'custom_variable_product_min_price', $original_min_price, $product )

    • 第一个参数是钩子名称(你可以自定义,建议加上专属前缀避免冲突),后续其他代码可以通过这个名称来添加过滤器逻辑。
    • 第二个参数是待过滤的原始值,也就是默认的可变产品最低价格。
    • 第三个参数是上下文数据,这里传入产品对象$product,方便后续过滤函数获取产品的分类、ID等信息,实现更精准的价格调整。
  2. 如何使用这个过滤器(示例)
    如果你需要在其他场景修改这个最低价格,比如给特定分类的产品最低价格打9折,可以添加以下代码:

    add_filter( 'custom_variable_product_min_price', 'adjust_variable_min_price', 10, 2 );
    function adjust_variable_min_price( $min_price, $product ) {
        // 示例:如果产品属于"折扣专区"分类,价格打9折
        if( has_term( 'discount-zone', 'product_cat', $product->get_id() ) ){
            $min_price = $min_price * 0.9;
        }
        return $min_price;
    }
    

注意事项

  • 钩子名称尽量唯一,比如加上你的主题/插件前缀,防止和其他代码的钩子重名导致冲突。
  • apply_filters()的参数顺序要和后续add_filter()的回调函数参数对应,比如这里先传价格再传产品,回调函数也要保持相同顺序。
  • 确保调用apply_filters()前已经正确获取到原始最低价格,避免传递无效值影响后续逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:37:11