如何显示用户购买的所有产品 - 购买历史

已发表: 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 中显示用户购买的产品。 此代码的理想用途可以在您想要将当前订单产品与先前订购的产品进行比较的任何逻辑中。 在大多数实际应用中,包括基于先前订单或交叉销售和向上销售的折扣分配。

类似文章