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