我试图隐藏所有其他运输方法有条件的,如果一个特定的存在.

以下是我的代码:

function hide_shipping_when_alg_wc_shipping_31_is_present( $rates, $package ) {
    // Check if alg_wc_shipping:31 is present
    $alg_wc_shipping_31_present = false;
    foreach ( $package->get_shipping_items() as $item ) {
        if ( $item->needs_shipping() && $item->get_shipping_class() === 'alg_wc_shipping:31' ) {
            $alg_wc_shipping_31_present = true;
            break;
        }
    }

    // If alg_wc_shipping:31 is present, hide alg_wc_shipping:30 and alg_wc_shipping:29
    if ( $alg_wc_shipping_31_present ) {
        foreach ( $rates as $rate_key => $rate ) {
            if ( in_array( $rate->get_method_id(), array( 'alg_wc_shipping:30', 'alg_wc_shipping:29' ) ) ) {
                unset( $rates[ $rate_key ] );
            }
        }
    }
    return $rates;
}
add_filter( 'woocommerce_package_rates', 'hide_shipping_when_alg_wc_shipping_31_is_present', 10, 2 );

但这并不管用. 有人能告诉我这个代码出了什么问题吗?

我试了几种方法,但都不管用.

推荐答案

如果有特定的送货方式,您的代码真的可以简化为隐藏其他送货方式:

add_filter( 'woocommerce_package_rates', 'hide_others_except_specific_shipping_method', 10, 2 );
function hide_others_except_specific_shipping_method( $rates, $package ) {
    // Define the specific shipping method to keep if present
    $targeted_method_rate_id = 'alg_wc_shipping:31';

    if ( isset($rates[$targeted_method_rate_id]) ) {
        return array( $targeted_method_rate_id => $rates[$targeted_method_rate_id] );
    }
    return $rates;
}

代码放在活动子主题(或活动主题)的函数.php文件中.经过测试,效果良好.

Important:您必须清空购物车才能刷新运输方式缓存.

Php相关问答推荐

Laravel 10查询中的多个where子句

模型中的Laravel自定义查询字段

LaravelEloquent 的地方条件父/子与第三模型多对多

如何更改数据表行背景 colored颜色

PHP日期操作,将多个日期输出为格式化字符串

在WooCommerce产品变体SKU字段旁边添加自定义输入字段

允许在WooCommerce管理员优惠券列表中显示自定义优惠券类型

如何在php中生成包含第100秒的时间序列?

如何使用php一次更新两个数据库中的MySQL表

将下拉 Select 的值从WooCommerce后端保存并显示到前端

如何不重新查询模型A-&>;相关模型B-&>模型

未收到Strava WebHook事件数据

从字符串转换日期和/或时间时,Laravel转换失败

在WooCommerce循环中添加子类别和产品之间的分隔符

计算添加到购物车的点击次数并将其显示在 WooCommerce 管理产品列表中

我的功能以舒适的方式显示数组 struct

Laravel auth()->id() 在生产服务器中不工作

php如何删除括号内的百分比值

在帖子内容中使用短代码触发 Woocommerce 挂钩

一个php应用程序可以实例化多个RNG吗