如何顯示用戶購買的所有產品 - 購買歷史
已發表: 2020-08-15 如果您想顯示用戶購買的產品或顯示特定用戶的所有購買歷史記錄,您可以使用本文中共享的代碼來實現。 理想情況下,所有客戶訂單或購買歷史記錄都保存在 WordPress 數據庫中的帖子表中 -
 如果您想顯示用戶購買的產品或顯示特定用戶的所有購買歷史記錄,您可以使用本文中共享的代碼來實現。 理想情況下,所有客戶訂單或購買歷史記錄都保存在 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 中顯示用戶購買的產品。 此代碼的理想用途可以在您想要將當前訂單產品與之前訂購的產品進行比較的任何邏輯中。 在大多數實際應用中,包括基於先前訂單或交叉銷售和向上銷售的折扣分配。
類似文章
- 如何在刷新 WordPress 頁面時重定向 » 檢測頁面刷新 PHP
- 如何在 WordPress 中通過 Slug 獲取 Post ID 並附上一個實際示例
- 如何在 WooCommerce 中獲取當前產品類別名稱
- 如何在 WordPress 中獲取登錄用戶信息
- 如何在 WooCommerce 中隱藏產品或按類別或角色隱藏產品
- 如果未登錄 WordPress 如何重定向用戶 » 頁面重定向
- 如何在沒有插件的情況下以編程方式刪除 WordPress 管理員菜單項
- 如何隱藏 WooCommerce 客戶或按用戶角色的管理欄
- 如何在不使用插件的情況下在 WordPress 中創建數字分頁
- 如何在 Woocommerce 中更改退貨至商店鏈接
- WooCommerce 註銷而不確認:如何刪除“您確定要註銷嗎?”
- 如何在 WordPress 中獲取當前用戶角色和顯示角色
- 如何在沒有插件的情況下重定向 WordPress 頁面?
- 如何檢查插件在 WordPress 中是否處於活動狀態 [3 種方式]
- 如何向 WordPress 添加側邊欄 » 終極分步指南
- 如何在不使用插件的情況下在 WordPress 中成功登錄後重定向用戶
- 如何在 WordPress 主題中註冊側邊欄 » 一步一步 [標題小部件示例]
- 登錄 WooCommerce 後如何重定向到購物車
- 如何檢查用戶是否在 WordPress 中登錄
- 如何在 WooCommerce 中顯示庫存可用性文本 » In Stock & Out
