php - 为 Woocommerce 中的特定用户角色设置最低订单金额

标签 php woocommerce cart checkout user-roles

我正在创建一个批发网站。在这里,我已经找到了在客户下第一个订单后在两个用户角色之间切换的代码。现在,我只需要能够在购物车/结账页面上为不同用户角色设置最低订单金额,而我发现的大部分功能都超出了我的需要。网上搜索我找到了这段代码:

<?php
/*
Author: Doug Edgington
Description: Require a minimum order total in Woocommerce for a user role
*/
function dee_minimum_order_total_required() {
    if( is_user_logged_in() ) { 
        global $woocommerce;
        global $current_user;

        get_currentuserinfo();

        $dee_user_roles = $current_user->roles;
        $dee_user_role = array_shift($dee_user_roles);

        $dee_minimum = 50;
        if ( $woocommerce->cart->subtotal < $dee_minimum  && $dee_user_role == 'wholesale_buyer') {
            $woocommerce->add_error( sprintf( 'Wholesale users must have a minimum order total of $%s to place an order.' , $dee_minimum ) );
        }
    } //end main if statement
}
add_action( 'woocommerce_checkout_process', 'dee_minimum_order_total_required' );

如何向此代码添加 1 个以上的用户角色?

最佳答案

您使用的代码确实很旧且过时。下面的代码将检查应具有最低订单金额的批发用户角色的购物车商品:

// 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 文件中。经过测试并有效。

enter image description here

enter image description here


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

// 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 文件中。经过测试并有效。

It will display a different notice for each user role.

关于php - 为 Woocommerce 中的特定用户角色设置最低订单金额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51370967/

相关文章:

php - 如何在不使用 Foreach laravel 的情况下删除 key

php - 使用 PHP 和 Apache 的 NTLM 登录

javascript - WooCommerce 运费计算器查询

php - 获取单独订单的税金总额和税级

magento - 在 Magento 中访问 $this->getAddToCartUrl($_product)

php - $variable 是什么? : [] do?

php - HTML 输入类型按钮无法发送 PHP 变量?

php - 将名字和姓氏添加到 Woocommerce 中的新帐户电子邮件通知

wordpress - WooCommerce 中的圆形购物车小计

wordpress - Woocommerce 设置购物车到期间隔