2012-06-03 42 views
1

到目前爲止,我一直在使用下面的代碼,直到我把變化對特定產品已經很好地工作:wp電子商務 - 如何判斷用戶是否購買過產品?

<?php if (is_user_logged_in()) if (wpsc_has_purchases()) if (wpsc_bought_product(wpsc_the_product_id())) $bought_product = true; else $bought_product = false; ?> 

稍後在代碼中,我會ussed的bought_product變量,看是否產品已被購買,所以我可以打印一條特殊消息。

我的問題:由於對許多產品的變化,此代碼不再工作,它只適用於沒有變化的產品......我做錯了什麼? (順便說一句,如果你想使用WP電子商務,不 - 這是垃圾)

下面是wpsc_bought_product代碼:

function wpsc_bought_product($prodid) { 
    global $wpdb, $user_ID, $wpsc_purchlog_statuses, $gateway_checkout_form_fields, $purchase_log, $col_count; 

    do_action('wpsc_pre_purchase_logs'); 

    foreach ((array)$purchase_log as $purchase) { 


     // 2 = order received, 3 = accepted payment 
     if ($purchase['processed'] == 2) { 

      $cartsql = $wpdb->prepare("SELECT * FROM `" . WPSC_TABLE_CART_CONTENTS . "` WHERE `purchaseid`= %d", $purchase['id']); 
      $cart_log = $wpdb->get_results($cartsql, ARRAY_A); 
      if ($cart_log != null) { 
       foreach ((array)$cart_log as $cart_row) { 

        //if product is in the order 
        if ($prodid == $cart_row['prodid']) 
         return true; 

       } 
      } 

     } 
    } 

    return false; 
} 

通過觀察數據庫,我看到有產品的每種變體都有一個不同的ID,所以這就是爲什麼它沒有註冊爲被購買。那麼,我該如何判斷是否購買了任何變化?

回答

3

如果有人絆倒這個問題,我已經找出答案。

function wpsc_bought_product($prodid) { 
    global $wpdb, $user_ID, $wpsc_purchlog_statuses, $gateway_checkout_form_fields, $purchase_log, $col_count; 

    $prod_children_sql = $wpdb->prepare("SELECT `id` FROM `wp_posts` WHERE `post_parent`= %d", $prodid); 
    $prod_children_result = $wpdb->get_results($prod_children_sql, ARRAY_A); 

    $i=0; 
    foreach($prod_children_result as $inner) { 
     $prod_children[$i] = current($inner); 
     $i++;   
    } 

    do_action('wpsc_pre_purchase_logs'); 

    foreach ((array)$purchase_log as $purchase) { 


     // 2 = order received, 3 = accepted payment - probably 3 should be here 
     if ($purchase['processed'] == 2) { 

      $cartsql = $wpdb->prepare("SELECT * FROM `" . WPSC_TABLE_CART_CONTENTS . "` WHERE `purchaseid`= %d", $purchase['id']); 
      $cart_log = $wpdb->get_results($cartsql, ARRAY_A); 
      if ($cart_log != null) { 
       foreach ((array)$cart_log as $cart_row) { 

        //if product is in the order 
        if ($prod_children != null) { 
         if (in_array($cart_row['prodid'],$prod_children)) { 
          return true; 
         } 
        } else if ($prodid == $cart_row['prodid']) {      
         return true; 
        } 

       } 
      } 

     } 
    } 

    return false; 
} 
相關問題