사용자가 구매한 모든 제품을 표시하는 방법 – 구매 내역

게시 됨: 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() 함수는 사용자 개체를 검색하고 대안으로 현재 사용자 ID 를 직접 검색하는 get_current_user_id() 와 같은 함수를 사용할 수 있습니다.

2단계: 완료 및 처리 중인 사용자 주문 가져오기

이 단계에서는 get_posts() 함수를 사용하고 첫 번째 단계에서 얻은 사용자 ID와 함께 args 를 전달해야 하며 이 경우 사용자 ID는 $argsmeta_value 로 전달됩니다. 따라서 get_posts() 함수에 전달할 인수 배열을 만드는 것으로 시작합니다.

 //$args 배열 생성 
    $args = 배열(
	'숫자 포스트' => -1,
	'메타_키' => '_고객_사용자',
	'메타_값' => $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 = 배열(
		   '숫자 포스트' => -1,
			'메타_키' => '_고객_사용자',
			'메타_값' => $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를 반환합니다. 
    if ( ! $customer_orders ) 반환;
	$product_ids = 배열();
	foreach( $customer_orders as $customer_order ) {
	    $주문 ​​= wc_get_order( $customer_order->ID );
		$items = $order->get_items();
		foreach ( $items 를 $item 으로 ) {
			$product_id = $item->get_product_id();
			$product_ids[] = $product_id;
		}
	}
		
   $product_id 반환;

이제 1단계, 2단계 및 3단계의 코드를 결합하여 다음과 같은 완전한 코드를 만들 수 있습니다.

 기능 njengah_get_customer_purchase_history(){

     // 현재 사용자 객체 가져오기 
       $current_user = wp_get_current_user();
	  
     // 사용자가 유효한지 확인 
       if ( 0 == $current_user->ID ) 반환;
	  
	 //$args 배열 생성 
	   $args = 배열(
		   '숫자 포스트' => -1,
			'메타_키' => '_고객_사용자',
			'메타_값' => $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를 반환합니다. 
		if ( ! $customer_orders ) 반환;
		$product_ids = 배열();
		foreach( $customer_orders as $customer_order ) {
			$주문 ​​= wc_get_order( $customer_order->ID );
			$items = $order->get_items();
			foreach ( $items 를 $item 으로 ) {
				$product_id = $item->get_product_id();
				$product_ids[] = $product_id;
			}
		}
		
		$product_id 반환;
	   
}

4단계: 함수 반환 테스트

이 단계에서는 다음과 같이 print_r() 함수를 사용하여 3단계의 함수에서 데이터가 표시되는지 확인할 수 있습니다.

 print_r(njengah_get_customer_purchase_history());

모든 단계를 올바른 방법으로 따랐다면 아래 이미지와 같이 데이터 표시를 wp_head action hook에 추가한 데이터가 표시되는 것을 볼 수 있을 것입니다.

사용자가 구매한 제품 표시

이제 단축 코드 또는 테마 또는 플러그인 개발에서 이 데이터를 사용하여 원하는 곳 어디에서나 구매 내역을 표시할 수 있습니다.

결론

이번 포스트에서는 사용자가 구매한 상품을 WooCommerce에 표시하는 방법을 단계별로 설명했습니다. 이 코드의 이상적인 사용은 현재 주문 제품을 이전에 주문한 제품과 비교하려는 모든 논리에 있을 수 있습니다. 대부분의 실제 적용에는 이전 주문 또는 교차 판매 및 상향 판매를 기반으로 한 할인 할당이 포함됩니다.

유사한 기사