Funkcjonalność polegająca na tym, że możemy powrócić do ostatnio przeglądanych produktów może być bardzo przydatna. W tym artykule stworzymy sekcję, osobną stronę lub widget, w których takie produkty będzie można zaprezentować. To wszystko bez wtyczki, czyli bez dodatkowych kosztów, straty w prędkości działania sklepu i ewentualnych problemów z bezpieczeństwem.

Działanie tego mechanizmu jest banalnie proste. Wystarczy śledzić na jakie podstrony wchodzi użytkownik. Jeżeli jest to strona z produktem, ID tego produktu zapisujemy do pamięci. Następnie za pomocą pętli w dowolnym miejscu możemy te produkty zaprezentować lub użyć gotowego shortcode, który pokaże produkty według tablicy z numerami ID.

Kod odpowiedzialny za zapisywanie produktów można umieścić w pliku functions.php lub we własnej wtyczce WordPress. Podepniemy się pod akcję template_redirect i jeżeli znajdziemy się na innej stronie niż strona z pojedynczym produktem kończymy działanie skryptu. Jeżeli jednak będzie to strona z produktem deklarujemy tablicę $visited_products.

function last_visited_products() {
     if ( ! is_singular( 'product' ) ) {
         return;
     }
     global $post;
     if ( empty( $_COOKIE['woocommerce_recently_viewed'] ) ) {
         $visited_products = array();
     }
     else {
         $visited_products = (array) explode( '|', $_COOKIE['woocommerce_recently_viewed'] );
     }
     if ( ! in_array( $post->ID, $visited_products) ) {
         $visited_products[] = $post->ID;
     }
     if ( sizeof( $visited_products) > 15 ) {
         array_shift( $visited_products);
     }
     wc_setcookie( 'woocommerce_recently_viewed', implode( '|', $visited_products ) );
     global $my_visited_products;
     $my_visited_products = $visited_products;
 }
 add_action( 'template_redirect', 'last_visited_products', 20 );

Sprawdźmy za pomocą instrukcji var_dump($my_visited_products) czy numery ID produktów zapisują się w naszej zmiennej sesyjnej i zmiennej globalnej $my_visited_products. Jeżeli tak, to nie pozostaje nam nic innego jak stworzyć pętlę, która atrakcyjnie zaprezentuje nam te produkty z miniaturkami, cenami i oczywiście linkami do tych produktów:

<?php    
     global $my_visited_products;
     $args = array( 
         'post_type' => 'product', 
         'post__in'  => $my_visited_products );                       
     $loop = new WP_Query( $args );                        
     if ( $loop->have_posts() ) {                            
         while ( $loop->have_posts() ) : $loop->the_post(); 
         wc_get_template_part( 'content', 'product-slide' );   
         endwhile; 
     } 
     else { echo __( 'Nie przeglądano jeszcze żadnych produktów' ); } 
     wp_reset_postdata(); 
 ?>

Posłużyliśmy się zmienną globalną $my_visited_products i własnym szablonem content-product-slide.php może tam być oczywiście dowolny szablon lub od razu kod miniaturki produktu z takimi funkcjami jak get_permalink(), get_title() itd…

Podsumowanie

Widget, sekcja lub slajder z ostatnio przeglądanymi produktami mogą być bardzo wygodnymi narzędziami dla klientów, którzy porównują produkty. takie niepozorne elementy mogą zwiększyć sprzedaż, wartość koszyków i ogólny czas spędzany w naszym sklepie. Implementacja bez dodatkowej wtyczki to oszczędność pieniędzy, pewność że nas sklep będzie działał szybko, nie „wysypie” się przy następnej aktualizacji i nie będzie obciążony kolejnymi lukami bezpieczeństwa jak to zwykle bywa z tego typu wtyczkami.

Oceń artykuł na temat: Ostatnio przeglądane produkty w WooCommerce (bez wtyczki)
Średnia : 4.9 , Maksymalnie : 5 , Głosów : 8