如何顯示用戶購買的所有產品 - 購買歷史

已發表: 2020-08-15

顯示用戶購買的產品 如果您想顯示用戶購買的產品或顯示特定用戶的所有購買歷史記錄,您可以使用本文中共享的代碼來實現。 理想情況下,所有客戶訂單或購買歷史記錄都保存在 WordPress 數據庫中的帖子表中 - wp_posts 。 因此,您可以使用get_post(). 功能,我將使用一個例子來說明。

WooCommerce 顯示用戶購買的產品

第一步顯示客戶購買的產品,我們需要獲取客戶的詳細信息,我們可以利用wp_get_current_user()函數返回當前用戶的對象。

第 1 步:創建顯示客戶歷史記錄和獲取用戶詳細信息的功能

例如函數和獲取當前用戶詳細信息如下:

 功能 njengah_get_customer_purchase_history(){

     // 獲取當前用戶對象 
      $current_user = wp_get_current_user();
     // 檢查用戶是否合法 
      if ( 0 == $current_user->ID ) 返回;

}

wp_get_current_user()函數檢索用戶對象,您也可以使用類似get_current_user_id()的函數直接檢索當前用戶 ID

第 2 步:完成並處理用戶訂單

在這一步中,我們需要使用get_posts()函數並將args與我們在第一步中獲得的用戶 ID 一起傳遞,在這種情況下,用戶 id 將作為$args中的meta_value傳遞。 因此,我們首先創建將傳遞給 get_posts() 函數的參數數組。

 //創建$args數組 
    $args = 數組(
	'numberposts' => -1,
	'meta_key' => '_customer_user',
	'meta_value' => $current_user->ID,
  	'post_type' => wc_get_order_types(),
	'post_status' => array_keys( wc_get_is_paid_statuses() ),
    );

創建參數後,我們沒有將 $args 數組作為參數傳遞給get_posts()函數,如下所示:

 $customer_orders = get_posts($args);

在進行下一步之前,我們將步驟 1 和步驟 2 中的代碼組合起來,組合後的代碼應如下所示:

 功能 njengah_get_customer_purchase_history(){

     // 獲取當前用戶對象 
       $current_user = wp_get_current_user();
	  
     // 檢查用戶是否合法 
       if ( 0 == $current_user->ID ) 返回;
	  
	 //創建$args數組 
	   $args = 數組(
		   'numberposts' => -1,
			'meta_key' => '_customer_user',
			'meta_value' => $current_user->ID,
			'post_type' => wc_get_order_types(),
			'post_status' => array_keys( wc_get_is_paid_statuses() ),
		);
	  
	  // 將 $args 傳遞給 get_posts() 函數 
	  $customer_orders = get_posts($args);
	   

}

在這一步中,我們現在將前一個客戶的所有購買歷史記錄為一個數組,我們將在下一步中循環獲取產品 ID。

第 3 步:遍歷客戶訂單並返回產品 ID 以供展示

在這一步中,我們需要遍歷我們在上一步中獲得的訂單,並返回一個包含產品 ID 的數組。 我們可以使用以下代碼使用 foreach 循環來做到這一點。

 // 遍歷訂單並返回 ID 
    如果(!$customer_orders)返回;
	$product_ids = 數組();
	foreach ( $customer_orders 作為 $customer_order ) {
	    $order = wc_get_order($customer_order->ID);
		$items = $order->get_items();
		foreach ( $item 作為 $item ) {
			$product_id = $item->get_product_id();
			$product_ids[] = $product_id;
		}
	}
		
   返回 $product_ids;

我們現在可以將第 1 步、第 2 步和第 3 步中的代碼組合起來,得到完整的代碼如下:

 功能 njengah_get_customer_purchase_history(){

     // 獲取當前用戶對象 
       $current_user = wp_get_current_user();
	  
     // 檢查用戶是否合法 
       if ( 0 == $current_user->ID ) 返回;
	  
	 //創建$args數組 
	   $args = 數組(
		   'numberposts' => -1,
			'meta_key' => '_customer_user',
			'meta_value' => $current_user->ID,
			'post_type' => wc_get_order_types(),
			'post_status' => array_keys( wc_get_is_paid_statuses() ),
		);
	  
	  // 將 $args 傳遞給 get_posts() 函數 
	  $customer_orders = get_posts($args);
	  
	  // 遍歷訂單並返回 ID 
		如果(!$customer_orders)返回;
		$product_ids = 數組();
		foreach ( $customer_orders 作為 $customer_order ) {
			$order = wc_get_order($customer_order->ID);
			$items = $order->get_items();
			foreach ( $item 作為 $item ) {
				$product_id = $item->get_product_id();
				$product_ids[] = $product_id;
			}
		}
		
		返回 $product_ids;
	   
}

第 4 步:測試函數返回

在此步驟中,我們可以使用 print_r() 函數檢查是否從步驟 3 中的函數顯示數據,如下所示:

 print_r(njengah_get_customer_purchase_history());

如果您以正確的方式執行所有步驟,您應該會看到顯示的數據,如下圖所示,我已將數據顯示添加到wp_head操作掛鉤。

展示用戶購買的產品

您現在可以繼續在短代碼或主題或插件開發中使用此數據,以在您希望的任何地方顯示購買歷史記錄。

結論

在這篇文章中,我逐步解釋瞭如何在 WooCommerce 中顯示用戶購買的產品。 此代碼的理想用途可以在您想要將當前訂單產品與之前訂購的產品進行比較的任何邏輯中。 在大多數實際應用中,包括基於先前訂單或交叉銷售和向上銷售的折扣分配。

類似文章