Woocommerce按用户角色排列的最小订单

时间:2015-09-08 01:53:48

标签: php function woocommerce

之前有人问过类似我的问题,但提供的解决方案似乎对我没有帮助。

我正在批发网站上工作。对于首次购买者,最低订单是500美元。对于返回的买家/重新订单,没有最低要求。我假设我需要制作2个不同的批发用户角色 - 一个用于首次购买者,另一个用于退货/重新订购买家。我在想新批发和批发重新订购会有效。如何将其应用于functions.php?这是我目前使用的代码:

add_action( 'woocommerce_checkout_process', 'wc_minimum_order_amount' );
add_action( 'woocommerce_before_cart' , 'wc_minimum_order_amount' );

function wc_minimum_order_amount() {
// Set this variable to specify a minimum order value
$minimum = 500;

if ( WC()->cart->total < $minimum ) {

    if( is_cart() ) {

        wc_print_notice( 
            sprintf( 'You must have an order with a minimum of %s to place your order, your current order total is %s.' , 
                wc_price( $minimum ), 
                wc_price( WC()->cart->total )
            ), 'error' 
        );

    } else {

        wc_add_notice( 
            sprintf( 'You must have an order with a minimum of %s to place your order, your current order total is %s.' , 
                wc_price( $minimum ), 
                wc_price( WC()->cart->total )
            ), 'error' 
        );

    }
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您需要current_user_can()来测试当前用户执行某项操作的能力。

创建角色

首先,您需要为没有任何限制的用户创建新角色。 Members插件是创建角色和编辑其功能的天才。

例如,您可以创建Returning Wholesaler角色。

定义新角色的功能

您应该复制&#34;客户&#34;角色的能力......所以readedit_postsdelete_posts

然后,添加一个名为wholesale_reorder

的新功能

修改条件逻辑

然后你可以转换你的if语句:

if ( WC()->cart->total < $minimum )

为:

if ( WC()->cart->total < $minimum && ! current_user_can( 'wholesale_reorder' ) )

在没有新角色的情况下简化

如果您没有任何现有客户,不需要多个级别的批发,不要与常规客户一起批发,您不要&# 39; t有一种方法可以在没有订购的情况下进行注册,然后表面上你可以跳过添加新角色而只是测试current_user_can('customer'),因为唯一会成为客户的人就是已经订购了某些东西的人。