1

在 Woocommerce 中,我使用 WooCommerce Wholesale Pro Suite (来自 IgniteWoo)和统一费率 Box Shipping 插件将 B2B 添加到我们的 eshop。

我正在尝试为特定用户角色、客人和客户禁用统一费率箱式运输。我在网上搜索后找到了这段代码:

add_filter( 'woocommerce_package_rates', 'hide_shipping_for_user_role', 10, 2 );
function hide_shipping_for_user_role( $rates, $package ) {
// Role ID to be excluded
$excluded_role = "wholesale_customer";

// Shipping rate to be excluded
$shipping_id = 'table_rate_shipping_free-shipping';

// Get current user's role
$user = wp_get_current_user();
if ( empty( $user ) ) return false;

if( in_array( $excluded_role, (array) $user->roles ) && isset( $rates[ $shipping_id ] ) )
unset( $rates[ $shipping_id ] );

return $rates;
}

我应该使用什么来代替“ wholesale_customer”和“ table_rate_shipping_free-shipping”,所以对于客人和客户角色,统一费率盒子运输不显示?

任何帮助表示赞赏。

4

1 回答 1

3

更新 2:

您可能必须在“运输选项”选项卡下的常规运输设置中“启用调试模式”,以暂时禁用运输缓存。

有关信息: “统一费率箱”的运输方式 ID 是flat_rate_boxes

以下代码将禁用“Guests” (未登录用户)和“customer”用户角色的“Flat rate box”运输方式:

add_filter( 'woocommerce_package_rates', 'hide_specific_shipping_method_based_on_user_role', 30, 2 );
function hide_specific_shipping_method_based_on_user_role( $rates, $package ) {

    ## --- Your settings --- ##
    $excluded_role = "customer"; // User role to be excluded
    $shipping_id = 'flat_rate_boxes'; // Shipping rate to be removed

    foreach( $rates as $rate_key => $rate ){
        if( $rate->method_id === $shipping_id ){
            if( current_user_can( $excluded_role ) || ! is_user_logged_in() ){
                unset($rates[$rate_key]);
                break;
            }
        }
    }
    return $rates;
}

代码位于您的活动子主题(或活动主题)的 function.php 文件中。测试和工作。

不要忘记启用回运缓存。

于 2018-10-10T19:04:55.867 回答