且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

为Woocommerce中的特定用户角色设置最小订购量

更新时间:2023-11-30 12:03:34

您使用的代码确实过时且过时。以下代码将检查批发用户角色的购物车项目,该购物车项目应具有最小订单金额:

The code you are using is really old and obsolete. The code below will check cart items for Wholesale user role that should have a minimal order amount:

// Cart and checkout validation
add_action( 'woocommerce_check_cart_items', 'minimal_total_required' ); // Cart and Checkout
add_action( 'woocommerce_checkout_process', 'minimal_total_required' ); // Checkout (optional)
function minimal_total_required() {
    $user = wp_get_current_user();

    ## -- YOUR SETTINGS BELOW -- ##

    $min_amount    = 50; // Minimal order amount
    $targeted_role = 'wholesale_buyer'; // User role

    // Exit for non logged users or when minimal order amout is reached
    if( $user->ID == 0 || WC()->cart->subtotal >= $min_amount ) 
        return; 

    // Display an error notice for Wholesale user role
    if ( in_array( $targeted_role, $user->roles ) ) 
        wc_add_notice( sprintf( __("As a Wholesale user you must have a minimal order total of %s.") , wc_price($min_amount) ), 'error' );
}

代码进入活动子主题(或活动主题)的function.php文件)。经过测试并有效。

Code goes in function.php file of your active child theme (or active theme). Tested and works.

对于两个用户角色和两个最小金额,您将使用以下内容:

For Two user roles and two minimal amounts you will use the following:

// Cart and checkout validation
add_action( 'woocommerce_check_cart_items', 'minimal_total_required' ); // Cart and Checkout
add_action( 'woocommerce_checkout_process', 'minimal_total_required' ); // Checkout (optional)
function minimal_total_required() {
    $user = wp_get_current_user();

    // Exit for non logged users
    if( $user->ID == 0 ) return;

    ## -- YOUR SETTINGS BELOW (For 2 user roles and 2 minimal amounts) -- ##

    $min_amount    = array( 50, 40 ); // Minimal order amounts
    $targeted_role = array('wholesale_buyer', 'customer'); // Targetted User roles

    $cart_subtotal  = WC()->cart->subtotal;

    // Wholesale user
    if ( in_array( $targeted_role[0], $user->roles ) && $cart_subtotal < $min_amount[0]){
        $text = sprintf( __('As a Wholesale user you must have a minimal order total amount of %s.'), wc_price($min_amount[0]) );
    }
    // Customer user
    elseif ( in_array( $targeted_role[1], $user->roles ) && $cart_subtotal < $min_amount[1]){
        $text = sprintf( __('You must have a minimal order total amount of %s.'), wc_price($min_amount[1]) );
    }

    // Display an error notice for Wholesale user role
    if( isset($text) )
        wc_add_notice( $text, 'error' );
}

代码进入活动子主题(或活动主题)的function.php文件)。经过测试并有效。

Code goes in function.php file of your active child theme (or active theme). Tested and works.


它将为每个用户角色显示不同的通知。

It will display a different notice for each user role.