Woocommerce按用户订单总数更改角色

时间:2017-03-22 15:07:38

标签: php wordpress woocommerce

我有一个php实现自动更改用户角色的问题。 所以我有自定义角色dovclient。第一次用户订购获得角色Customer

如果他购买的产品总额为500美元,我需要更改用户角色。

所以我有一个功能

function wpa_120656_convert_paying_customer( $order_id ) {

  $order = new WC_Order( $order_id );

    $user_id = $order->user_id;

    $customer_orders = get_posts( array(
      'numberposts' => -1,
        'meta_key'    => '_customer_user',
      'meta_value'  => $user_id,
        'post_type'   => 'shop_order',
    ) );

    $total = 0;
    foreach ( $customer_orders as $customer_order ) {
        $order = wc_get_order( $customer_order );
        $total += $order->get_total();
    }

    return $total;

    if ( $total > 500 ) {
       update_user_meta( $order->user_id, 'paying_customer', 1 );
        $user = new WP_User( $order->user_id );


        $user->remove_role( 'customer' ); 


       $user->add_role( 'dovclient10' );
    }
}
add_action( 'woocommerce_order_status_completed', 'wpa_120656_convert_paying_customer' );

我知道,$customer_orders正在计算,我按照订单计算功能。我的意思是如果$customer_orders > 2为ex。,那么改变角色。

但总订单价格我有问题。角色变化不是。我不知道为什么。也许问题出在foreach ...

请帮助我!

1 个答案:

答案 0 :(得分:0)

惊人的帮助! 0 ...好的我做到了。

function wpa_120656_convert_paying_customer( $order_id ) {

  $order = new WC_Order( $order_id );

    $user_id = $order->user_id;

    $customer_orders = get_posts( array(
      'numberposts' => -1,
        'meta_key'    => '_customer_user',
      'meta_value'  => $user_id,
        'post_type'   => 'shop_order',
    ) );

    $totall = 0;
    foreach ( $customer_orders as $customer_order ) {
    $order      = wc_get_order( $customer_order );
    $totall += $order->get_total();
    }

    if ( $totall > 500 ) {
        update_user_meta( $order->user_id, 'paying_customer', 1 );
       $user = new WP_User( $order->user_id );

        if( get_role('customer') ){
             $user->remove_role( 'customer' ); 
             $user->add_role( 'dovclient' );
        }
   }
}
add_action( 'woocommerce_order_status_completed', 'wpa_120656_convert_paying_customer' );