Jak wyświetlić wszystkie produkty zakupione przez użytkownika – historia zakupów

Opublikowany: 2020-08-15

Wyświetl produkty zakupione przez użytkownika Jeśli chcesz wyświetlić produkty zakupione przez użytkownika lub wyświetlić całą historię zakupów dla konkretnego użytkownika, możesz to osiągnąć za pomocą kodu udostępnionego w tym poście. W idealnym przypadku wszystkie zamówienia klientów lub historia zakupów są zapisywane w tabeli postów w bazie danych WordPress – wp_posts . Dlatego możesz pobrać dane z tabeli bazy danych za pomocą funkcji get_post(). funkcjonować, jak zilustruję na przykładzie.

Produkty wyświetlania WooCommerce zakupione przez użytkownika

Pierwszym krokiem do wyświetlenia produktów zakupionych przez klienta jest uzyskanie danych klienta i możemy skorzystać z funkcji wp_get_current_user() , która zwraca obiekt aktualnego użytkownika.

Krok 1: Utwórz funkcję do wyświetlania historii klienta i uzyskiwania danych użytkownika

Na przykład funkcja i uzyskaj dane bieżącego użytkownika w następujący sposób:

 funkcja njengah_get_customer_purchase_history(){

     // Pobierz bieżący obiekt użytkownika 
      $bieżący_użytkownik = wp_get_bieżący_użytkownik();
     // Sprawdź, czy użytkownik jest prawidłowy 
      if ( 0 == $bieżący_użytkownik->ID ) return;

}

Funkcja wp_get_current_user() pobiera obiekt użytkownika i można alternatywnie użyć funkcji takiej jak get_current_user_id() , która bezpośrednio pobiera identyfikator bieżącego użytkownika .

Krok 2: Uzyskaj zamówienia użytkowników zarówno ukończone, jak i przetworzone

W tym kroku musimy użyć funkcji get_posts() i przekazać argumenty z identyfikatorem użytkownika, który uzyskaliśmy w pierwszym kroku iw tym przypadku identyfikator użytkownika zostanie przekazany jako meta_value w $args . Zaczynamy więc od utworzenia tablicy arguments, którą przekażemy do funkcji get_posts().

 //Utwórz tablicę $args 
    $argumenty = tablica(
	'liczba postów' => -1,
	'meta_key' => '_customer_user',
	'meta_value' => $bieżący_użytkownik->ID,
  	'post_type' => wc_get_order_types(),
	'post_status' => array_keys( wc_get_is_paid_statuses() ),
    );

Po utworzeniu argumentów nie przekazujemy tablicy $args do funkcji get_posts() jako parametru w następujący sposób:

 $customer_orders = get_posts($args);

Zanim przejdziemy do kolejnego kroku, łączymy kod w kroku 1 i kroku 2 , a łączony kod powinien wyglądać następująco :

 funkcja njengah_get_customer_purchase_history(){

     // Pobierz bieżący obiekt użytkownika 
       $bieżący_użytkownik = wp_get_bieżący_użytkownik();
	  
     // Sprawdź, czy użytkownik jest prawidłowy 
       if ( 0 == $bieżący_użytkownik->ID ) return;
	  
	 //Utwórz tablicę $args 
	   $argumenty = tablica(
		   'liczba postów' => -1,
			'meta_key' => '_customer_user',
			'meta_value' => $bieżący_użytkownik->ID,
			'post_type' => wc_get_order_types(),
			'post_status' => array_keys( wc_get_is_paid_statuses() ),
		);
	  
	  // Przekaż $args do funkcji get_posts() 
	  $customer_orders = get_posts($args);
	   

}

Na tym etapie mamy teraz całą historię zakupów poprzedniego klienta jako tablicę , przez którą przejdziemy w pętli, aby uzyskać identyfikatory produktów w następnym kroku.

Krok 3: Przejrzyj zamówienia klientów i zwróć identyfikatory produktów gotowych do wyświetlenia

W tym kroku musimy przejrzeć zamówienia, które otrzymaliśmy w poprzednim kroku i zwrócić tablicę z identyfikatorami produktów. Możemy to zrobić za pomocą poniższego kodu za pomocą pętli foreach.

 // przejdź przez zamówienia i zwróć identyfikatory 
    if (! $customer_orders) return;
	$id_produktów = tablica();
	foreach ( $customer_orders as $customer_order ) {
	    $order = wc_get_order( $customer_order->ID );
		$items = $order->get_items();
		foreach ( $items jako $item ) {
			$product_id = $item->get_product_id();
			$product_ids[] = $product_id;
		}
	}
		
   zwróć $product_ids;

Możemy teraz połączyć kod z kroku 1, kroku 2 i kroku 3, aby otrzymać kompletny kod w następujący sposób:

 funkcja njengah_get_customer_purchase_history(){

     // Pobierz bieżący obiekt użytkownika 
       $bieżący_użytkownik = wp_get_bieżący_użytkownik();
	  
     // Sprawdź, czy użytkownik jest prawidłowy 
       if ( 0 == $bieżący_użytkownik->ID ) return;
	  
	 //Utwórz tablicę $args 
	   $argumenty = tablica(
		   'liczba postów' => -1,
			'meta_key' => '_customer_user',
			'meta_value' => $bieżący_użytkownik->ID,
			'post_type' => wc_get_order_types(),
			'post_status' => array_keys( wc_get_is_paid_statuses() ),
		);
	  
	  // Przekaż $args do funkcji get_posts() 
	  $customer_orders = get_posts($args);
	  
	  // przejdź przez zamówienia i zwróć identyfikatory 
		if (! $customer_orders) return;
		$id_produktów = tablica();
		foreach ( $customer_orders as $customer_order ) {
			$order = wc_get_order( $customer_order->ID );
			$items = $order->get_items();
			foreach ( $items jako $item ) {
				$product_id = $item->get_product_id();
				$product_ids[] = $product_id;
			}
		}
		
		zwróć $product_ids;
	   
}

Krok 4: Testowanie powrotu funkcji

W tym kroku możemy sprawdzić, czy dane są wyświetlane z funkcji w kroku 3 za pomocą funkcji print_r() w następujący sposób:

 print_r(njengah_get_customer_purchase_history());

Jeśli wykonałeś wszystkie kroki we właściwy sposób, powinieneś zobaczyć dane wyświetlane, jak widać na poniższym obrazku, gdzie dodałem wyświetlanie danych do haka akcji wp_head .

wyświetlaj produkty zakupione przez użytkownika

Możesz teraz śmiało używać tych danych w skróconym kodzie lub w opracowywaniu motywu lub wtyczki, aby wyświetlić historię zakupów w dowolnym miejscu.

Wniosek

W tym poście wyjaśniłem jak krok po kroku wyświetlić zakupiony przez użytkownika produkt w WooCommerce. Idealne zastosowanie tego kodu może być w dowolnej logice, w której chcesz porównać produkty w bieżącym zamówieniu z produktami zamówionymi wcześniej. W większości praktycznych zastosowań obejmuje alokację rabatów na podstawie wcześniejszych zamówień lub sprzedaży krzyżowej i wyprzedaży.

Podobne artykuły