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.
Odpowiedz lub skomentuj