2016-06-29 22 views
0

In Woocommerce versuche ich einen Weg zu finden, einen 20% Rabatt auf die erste Bestellung eines neuen Kunden zu gewähren. Es scheint, dass ich die Funktionen woocommerce_after_checkout_validation und check_new_customer_coupon dazu verwenden kann, aber es funktioniert nicht.Wie programmiere ich einen Gutschein in Woocommerce für die erste Bestellung eines Kunden programmgesteuert?

function.php:

add_action('woocommerce_after_checkout_validation','check_new_customer_coupon', 0); 

function check_new_customer_coupon(){ 
    global $woocommerce; 
    // you might change the name of your coupon 
    $new_cust_coupon_code = 'test'; 

    $has_apply_coupon = false; 

    foreach (WC()->cart->get_coupons() as $code => $coupon) { 
     if($code == $new_cust_coupon_code) { 
      $has_apply_coupon = true; 
     } 
    } 

    if($has_apply_coupon) { 

     if(is_user_logged_in()) { 
      $user_id = get_current_user_id(); 

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

      if(count($customer_orders) > 0) { 
       $has_ordered = false; 

       $statuses = array('wc-failed', 'wc-cancelled', 'wc-refunded'); 

       // loop thru orders, if the order is not falled into failed, cancelled or refund then it consider valid 
       foreach($customer_orders as $tmp_order) { 

        $order = wc_get_order($tmp_order->ID); 
        if(!in_array($order->get_status(), $statuses)) { 
         $has_ordered = true; 
        } 
       } 

       // if this customer already ordered, we remove the coupon 
       if($has_ordered == true) { 
        WC()->cart->remove_coupon($new_cust_coupon_code); 
        wc_add_notice(sprintf("Coupon code: %s is only applicable for new customer." , $new_cust_coupon_code), 'error'); 
        return false; 
       } 
      } else { 
       // customer has no order, so valid to use this coupon 
       return true; 
      } 

     } else { 
      // new user is valid 
      return true; 
     } 
    } 

} 

Antwort

0

Vielleicht können Sie eine Abhilfe tun, indem Sie so etwas wie dies auf der Website setzen:

Mit dem Gutschein-XXXXXX 20% steigen für Ihre erste commande

https://docs.woothemes.com/document/coupon-management/

und in Coupon-Management setzen Sie eine Beschränkung auf 1 pro Benutzer?

+0

Diese Lösung ist für alle Kunden. Ich möchte diesen Rabatt nur für neue Kunden verfügbar machen. –