Jak wyświetlić wszystkie produkty zakupione przez użytkownika – historia zakupów
Opublikowany: 2020-08-15
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 .

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
- Jak przekierować przy odświeżaniu strony WordPress » Wykryj stronę Odśwież PHP
- Jak uzyskać identyfikator posta od Slug w WordPress z praktycznym przykładem?
- Jak uzyskać aktualną nazwę kategorii produktu w WooCommerce?
- Jak się zalogować do informacji o użytkowniku w WordPressie
- Jak ukryć produkt w WooCommerce lub ukryć produkty według kategorii lub ról
- Jak przekierować użytkownika, jeśli nie jest zalogowany w WordPressie » Przekierowanie strony
- Jak programowo usunąć pozycje menu administratora WordPress bez wtyczki?
- Jak ukryć pasek administracyjny dla klientów WooCommerce lub według ról użytkownika?
- Jak utworzyć stronicowanie liczb w WordPress bez korzystania z wtyczki?
- Jak zmienić link powrotu do sklepu w Woocommerce?
- Wylogowanie WooCommerce bez potwierdzenia: Jak usunąć „Czy na pewno chcesz się wylogować?”
- Jak uzyskać aktualną rolę użytkownika w WordPressie i rolach wyświetlania?
- Jak przekierować stronę WordPress bez wtyczek?
- Jak sprawdzić, czy wtyczka jest aktywna w WordPress [ 3 SPOSOBY ]
- Jak dodać pasek boczny do WordPressa »Ostateczny przewodnik krok po kroku
- Jak przekierować użytkowników po pomyślnym zalogowaniu się do WordPressa bez użycia wtyczki?
- Jak zarejestrować pasek boczny w motywie WordPress » Krok po kroku [ Przykład widżetu nagłówka ]
- Jak przekierować do koszyka po zalogowaniu w WooCommerce
- Jak sprawdzić, czy użytkownik jest zalogowany w WordPressie
- Jak wyświetlić tekst dostępności zapasów w WooCommerce »W magazynie i poza nim
