วิธีแสดงผลิตภัณฑ์ทั้งหมดที่ซื้อโดยผู้ใช้ – ประวัติการซื้อ

เผยแพร่แล้ว: 2020-08-15

แสดงสินค้าที่ซื้อโดยผู้ใช้ หากคุณต้องการแสดงผลิตภัณฑ์ที่ซื้อโดยผู้ใช้หรือแสดงประวัติการซื้อทั้งหมดสำหรับผู้ใช้เฉพาะ คุณสามารถทำได้โดยใช้รหัสที่แชร์ในโพสต์นี้ ตามหลักการแล้ว คำสั่งซื้อของลูกค้าหรือประวัติการซื้อทั้งหมดจะถูกบันทึกไว้ในตารางโพสต์ในฐานข้อมูล WordPress – wp_posts คุณสามารถรับข้อมูลจากตารางฐานข้อมูลโดยใช้ get_post(). ฟังก์ชั่นตามที่ฉันจะอธิบายโดยใช้ตัวอย่าง

ผลิตภัณฑ์แสดงผล WooCommerce ที่ซื้อโดยผู้ใช้

ขั้นตอนแรกในการแสดงผลิตภัณฑ์ที่ลูกค้าซื้อ เราจำเป็นต้อง ได้รับรายละเอียดของลูกค้า และเราสามารถใช้ wp_get_current_user() ที่ส่งคืนอ็อบเจ็กต์ของผู้ใช้ปัจจุบันได้

ขั้นตอนที่ 1 : สร้างฟังก์ชันเพื่อแสดงประวัติลูกค้าและรับรายละเอียดผู้ใช้

ตัวอย่างเช่นฟังก์ชั่นและรับรายละเอียดผู้ใช้ปัจจุบันดังนี้:

 ฟังก์ชัน njengah_get_customer_purchase_history(){

     // รับผู้ใช้ปัจจุบัน Object 
      $current_user = wp_get_current_user();
     // ตรวจสอบว่าผู้ใช้ถูกต้องหรือไม่ 
      ถ้า ( 0 == $current_user->ID ) ส่งคืน;

}

wp_get_current_user() ดึงข้อมูลอ็อบเจ็กต์ผู้ใช้ และคุณสามารถใช้ฟังก์ชันเช่น get_current_user_id() ที่ดึงข้อมูล ID ผู้ใช้ปัจจุบัน โดยตรง

ขั้นตอนที่ 2: รับคำสั่งซื้อของผู้ใช้ทั้งที่เสร็จสมบูรณ์และกำลังดำเนินการ

ในขั้นตอนนี้ เราจำเป็นต้องใช้ฟังก์ชัน get_posts() และส่ง args ด้วย ID ผู้ใช้ที่เราได้รับในขั้นตอนแรก และในกรณีนี้ ID ผู้ใช้จะถูกส่งเป็น meta_value ใน $args ดังนั้นเราจึงเริ่มต้นด้วยการสร้างอาร์เรย์อาร์กิวเมนต์ที่เราจะส่งต่อไปยังฟังก์ชัน get_posts()

 //สร้าง $args array 
    $args = อาร์เรย์ (
	'ตัวเลข' => -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(){

     // รับผู้ใช้ปัจจุบัน Object 
       $current_user = wp_get_current_user();
	  
     // ตรวจสอบว่าผู้ใช้ถูกต้องหรือไม่ 
       ถ้า ( 0 == $current_user->ID ) ส่งคืน;
	  
	 //สร้าง $args array 
	   $args = อาร์เรย์ (
		   'ตัวเลข' => -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() function 
	  $customer_orders = get_posts( $args);
	   

}

ในขั้นตอนนี้ เรามี ประวัติการซื้อทั้งหมดของลูกค้าก่อนหน้านี้เป็นอาร์เรย์ ที่เราจะวนรอบเพื่อรับรหัสผลิตภัณฑ์ในขั้นตอนถัดไป

ขั้นตอนที่ 3: วนซ้ำคำสั่งซื้อของลูกค้า & รหัสสินค้าส่งคืนพร้อมสำหรับแสดง

ในขั้นตอนนี้ เราจำเป็นต้องวนรอบคำสั่งซื้อที่เราได้รับในขั้นตอนก่อนหน้าและส่งคืนอาร์เรย์ที่มีรหัสผลิตภัณฑ์ เราสามารถทำได้โดยใช้โค้ดต่อไปนี้โดยใช้ foreach loop

 // วนรอบคำสั่งและส่งคืน IDs 
    if ( ! $customer_orders ) ส่งคืน;
	$product_ids = อาร์เรย์ ();
	foreach ( $customer_orders เป็น $customer_order ) {
	    $order = wc_get_order( $customer_order->ID );
		$รายการ = $สั่งซื้อ->get_items();
		foreach ( $items เป็น $item ) {
			$product_id = $item->get_product_id();
			$product_ids[] = $product_id;
		}
	}
		
   ส่งคืน $product_ids;

ตอนนี้เราสามารถรวมรหัสในขั้นตอนที่ 1 ขั้นตอนที่ 2 และขั้นตอนที่ 3 เพื่อให้ได้รหัสที่สมบูรณ์ดังนี้ :

 ฟังก์ชัน njengah_get_customer_purchase_history(){

     // รับผู้ใช้ปัจจุบัน Object 
       $current_user = wp_get_current_user();
	  
     // ตรวจสอบว่าผู้ใช้ถูกต้องหรือไม่ 
       ถ้า ( 0 == $current_user->ID ) ส่งคืน;
	  
	 //สร้าง $args array 
	   $args = อาร์เรย์ (
		   'ตัวเลข' => -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() function 
	  $customer_orders = get_posts( $args);
	  
	  // วนรอบคำสั่งและส่งคืน IDs 
		if ( ! $customer_orders ) ส่งคืน;
		$product_ids = อาร์เรย์ ();
		foreach ( $customer_orders เป็น $customer_order ) {
			$order = wc_get_order( $customer_order->ID );
			$items = $order->get_items(); $รายการ = $สั่งซื้อ->get_items();
			foreach ( $items เป็น $item ) {
				$product_id = $item->get_product_id();
				$product_ids[] = $product_id;
			}
		}
		
		ส่งคืน $product_ids;
	   
}

ขั้นตอนที่ 4 : ทดสอบฟังก์ชัน Return

ในขั้นตอนนี้ เราสามารถตรวจสอบว่าข้อมูลแสดงจากฟังก์ชันในขั้นตอนที่ 3 หรือไม่ โดยใช้ฟังก์ชัน print_r() ดังต่อไปนี้:

 print_r(njengah_get_customer_purchase_history());

หากคุณทำตามขั้นตอนทั้งหมดอย่างถูกต้อง คุณควรเห็นข้อมูลที่แสดงตามที่เห็นในภาพด้านล่าง ซึ่งฉันได้เพิ่มการแสดงข้อมูลลงใน wp_head action hook

แสดงสินค้าที่ซื้อโดยผู้ใช้

ตอนนี้คุณสามารถใช้ข้อมูลนี้ในรหัสย่อหรือในการพัฒนาธีมหรือปลั๊กอินของคุณเพื่อแสดงประวัติการซื้อได้ทุกที่ที่คุณต้องการ

บทสรุป

ในโพสต์นี้ ฉันได้อธิบายวิธีการแสดงผลิตภัณฑ์ที่ซื้อโดยผู้ใช้ใน WooCommerce ทีละขั้นตอน การใช้รหัสนี้ในอุดมคติอาจใช้ตรรกะใดก็ได้ที่คุณต้องการเปรียบเทียบผลิตภัณฑ์ที่สั่งซื้อปัจจุบันกับผลิตภัณฑ์ที่สั่งซื้อก่อนหน้านี้ ในการใช้งานจริงส่วนใหญ่จะรวมถึงการจัดสรรส่วนลดตามคำสั่งซื้อก่อนหน้าหรือการขายต่อเนื่องและการขายที่เพิ่มขึ้น

บทความที่คล้ายกัน