Как создать шорткод недавно просмотренных продуктов WooCommerce
Опубликовано: 2021-05-05Вы ищете способ отображать недавно просмотренные продукты с помощью шорткода? В этом посте я хочу показать вам, как создать шорткод недавно просмотренных продуктов WooCommerce. По умолчанию WooCommerce позволяет использовать виджет для отображения списка продуктов, которые покупатель недавно просматривал.
Это встроенное решение очень эффективно, и мы верим, что скоро оно станет блоком Гутенберга.
Однако вы можете отобразить сопутствующие товары на новой странице. Это означает, что вам нужно создать шорткод.
Шорткод недавно просмотренных продуктов WooCommerce
В этом кратком руководстве мы расскажем, как создать простой шорткод для отображения недавно просмотренных товаров. Прежде чем продолжить, вы должны отметить, что это решение включает в себя обработку кода.
Если вы не знакомы с обработкой кода, мы рекомендуем обратиться к квалифицированному разработчику WordPress, чтобы не испортить свой сайт.
Вы также должны создать дочернюю тему, чтобы ваши изменения не потерялись во время обновления.
Давайте посмотрим, как вы можете этого добиться.
Шаги по добавлению шорткода недавно просмотренных продуктов
Чтобы создать шорткод, мы воспользуемся преимуществами существующего шорткода [products] и «передадим» ему идентификаторы продуктов без необходимости изобретать велосипед.
Кроме того, вы можете создать плагин, который регистрирует шорткод в теме. Мы воспользуемся этим методом, так как он самый простой.
Вам нужно создать новую папку с названием плагина.
Если вы не видите недавних продуктов, это потому, что вам все еще нужно активировать виджет «Недавно просмотренные продукты». Файл cookie «woocommerce_recently_viewed» сохраняется только тогда, когда используется виджет недавно просмотренных продуктов.
Наиболее важные данные, которые нам нужны, хранятся в файлах cookie с именем $_COOKIE['woocommerce_recently_viewed'].
Вы можете включить свой собственный код для отслеживания/создания файлов cookie, если хотите:
function custom_track_product_view() { if ( ! is_singular( 'product' ) ) { return; } global $post; if ( empty( $_COOKIE['woocommerce_recently_viewed'] ) ) $viewed_products = array(); else $viewed_products = (array) explode( '|', $_COOKIE['woocommerce_recently_viewed'] ); if ( ! in_array( $post->ID, $viewed_products ) ) { $viewed_products[] = $post->ID; } if ( sizeof( $viewed_products ) > 15 ) { array_shift( $viewed_products ); } // Store for session only wc_setcookie( 'woocommerce_recently_viewed', implode( '|', $viewed_products ) ); } add_action( 'template_redirect', 'custom_track_product_view', 20 );
Вот полный код плагина:
function njengah_woocommerce_recently_viewed_products( $atts, $content = null ) { // Get shortcode parameters extract(shortcode_atts(array( "per_page" => '5' ), $atts)); // Get WooCommerce Global global $woocommerce; // Get recently viewed product cookies data $viewed_products = ! empty( $_COOKIE['woocommerce_recently_viewed'] ) ? (array) explode( '|', $_COOKIE['woocommerce_recently_viewed'] ) : array(); $viewed_products = array_filter( array_map( 'absint', $viewed_products ) ); // If no data, quit if ( empty( $viewed_products ) ) return __( 'You have not viewed any product yet!', 'rc_wc_rvp' ); // Create the object ob_start(); // Get products per page if( !isset( $per_page ) ? $number = 5 : $number = $per_page ) // Create query arguments array $query_args = array( 'posts_per_page' => $number, 'no_found_rows' => 1, 'post_status' => 'publish', 'post_type' => 'product', 'post__in' => $viewed_products, 'orderby' => 'rand' ); // Add meta_query to query args $query_args['meta_query'] = array(); // Check products stock status $query_args['meta_query'][] = $woocommerce->query->stock_status_meta_query(); // Create a new query $r = new WP_Query($query_args); // If query return results if ( $r->have_posts() ) { $content = '<ul class="rc_wc_rvp_product_list_widget">'; // Start the loop while ( $r->have_posts()) { $r->the_post(); global $product; $content .= '<li> <a href="' . get_permalink() . '"> ' . ( has_post_thumbnail() ? get_the_post_thumbnail( $r->post->ID, 'shop_thumbnail' ) : woocommerce_placeholder_img( 'shop_thumbnail' ) ) . ' ' . get_the_title() . ' </a> ' . $product->get_price_html() . ' </li>'; } $content .= '</ul>'; } // Get clean object $content .= ob_get_clean(); // Return whole content return $content; } // Register the shortcode add_shortcode("woocommerce_recently_viewed_products", "njengah_woocommerce_recently_viewed_products");
После добавления кода добавьте [woocommerce_recently_viewed_products per_page=”5″] на любую страницу.
Это результат:
Вывод
В этом кратком руководстве мы поделились тем, как отображать недавно просмотренные продукты с помощью шорткода.
Вы должны быть осторожны при редактировании файла functions.php, потому что, если вы допустите ошибку, он отобразит критическую ошибку.
Похожие статьи
- Более 100 советов, подсказок и фрагментов Ultimate WooCommerce Hide Guide
- Как использовать шорткоды WordPress на страницах или в сообщениях с примером
- Как создать страницу моей учетной записи в WooCommerce
- Как создать шорткод для входа в WooCommerce
- Как импортировать товары WooCommerce
- Как настроить цену продукта WooCommerce за кг
- Как создать продукт программно WooCommerce
- Как создать секретный продукт WooCommerce
- Как создать WooCommerce после входа в систему с перенаправлением на домашнюю страницу
- Как создать кнопку WooCommerce «Добавить в корзину» по идентификатору продукта
- Как создать заказ программно WooCommerce
- Как добавить перенаправление страницы моей учетной записи WooCommerce
- Как экспортировать товары в WooCommerce
- Как добавить артикул товара в WooCommerce
- Как сделать дубликат товара в WooCommerce
- Как использовать do_shortcode в WordPress (PHP)
- Как создать пользовательскую страницу магазина WooCommerce
- Как получить информацию о заказе после оформления заказа в WooCommerce
- Как добавить цену к атрибуту в WooCommerce
- Как настроить бесплатную доставку с минимальными затратами в WooCommerce