Содержание
Задача. На сайте WordPress с Woocommerce возникла необходимость вывести на странице товара блок «Недавно просмотренные товары».
Вывод через виджет
Решение 1. В Woocommerce есть собственный виджет «Недавно просмотренных товаров». Чтобы использовать блок «Недавно просмотренные товары» нужно перейти в админке в виджеты и добавить (перетянуть) стандартный виджет Woocommerce «Недавно просмотренные товары» в нужный сайдбар. Правда, этот блок не очень красивый и скорей всего придется доработать стили CSS.
В темах Вордпресса где есть конструктор, можно в макете (шаблоне) карточки товара вставить сайдбар и выбрать там тот, в который был вставлен виджет просмотренных товаров.
Плагины
Решение 2. Также, для вывода недавно просмотренных пользователем товаров можно воспользоваться плагином Recently viewed and most viewed products (от CedCommerce). Он позволяет выводить не только недавно просмотренные товары, но и самые просматриваемые. После установки настраиваем отображение и вставляем в необходимое место шорткод.
Второй плагин Recently Viewed Products (Rajnish Arora) — показывает недавно просмотренные товары пользователем на странице товара, на странице магазина, на странице корзины или через шорткод [rvp_show]
или [rvp_show no_products="4" slider_use="true"]
. Немаловажно товары могут быть выведены в слайдере.
Свой шорткод
Задача. На сайте не отображались «Недавно просмотренные товары», ни через виджет, ни через виджеты конструктора WPBakery и даже плагины.
Решение 3. Разобраться в чем причина не было времени, но нашлось решение вывода недавно просмотренных товаров через свой шорткод на основе стандартного шорткода Woocommerce [products]
. Способ подсмотрел у misha.agency. Код №1 добавляем в functions.php
и выводим товары шорткодом [recently_viewed_products]
в нужном месте.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
add_action( 'template_redirect', 'f123_recently_viewed_product_cookie', 20 ); function f123_recently_viewed_product_cookie() { if ( ! is_product() ) { return; } if ( empty( $_COOKIE[ 'woocommerce_recently_viewed_2' ] ) ) { $viewed_products = array(); } else { $viewed_products = (array) explode( '|', $_COOKIE[ 'woocommerce_recently_viewed_2' ] ); } if ( ! in_array( get_the_ID(), $viewed_products ) ) { $viewed_products[] = get_the_ID(); } if ( sizeof( $viewed_products ) > 8 ) { // задаем количество товаров кот. будет храниться array_shift( $viewed_products ); } wc_setcookie( 'woocommerce_recently_viewed_2', join( '|', $viewed_products ) ); } add_shortcode( 'recently_viewed_products', 'f123_recently_viewed_products' ); function f123_recently_viewed_products() { if( empty( $_COOKIE[ 'woocommerce_recently_viewed_2' ] ) ) { $viewed_products = array(); } else { $viewed_products = (array) explode( '|', $_COOKIE[ 'woocommerce_recently_viewed_2' ] ); } if ( empty( $viewed_products ) ) { return; } $viewed_products = array_reverse( array_map( 'absint', $viewed_products ) ); $product_ids = join( ",", $viewed_products ); return do_shortcode( "[products ids='$product_ids' per_page='4' columns='4']" ); // выводим 4 товара в 4-х колонках } |