如何显示用户购买的所有产品 - 购买历史
已发表: 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
