WooCommerce как вывести новинки на карточке товара
Есть еще одна задача для продвижения интернет магазина на WooCommerce полезная для ваших клиентов. Очень часто мне приходят заказы на вывод новых товаров внутри карточки товара рядом с похожими товарами. Думаю это задача частая не только у меня, а вот в стандартных темах для WooCommerce этого не предусмотрено. Поэтому я решил сегодня немного приоткрыть завесу и описать процесс создания блока с новыми товарами в карточке товара.
Также вам будет интересна моя предыдущая статья из серии уроков WooCommerce «WooCommerce как вывести аукционный товар со скидкой в карточке товара«.
Как и в предыдущем уроке для разработки этого блока мы возьмем существующий блок с выводом похожих статей. Все будем делать по порядку.
- Находим файл шаблона для карточки товара, обычно он находится в папке /wp-content/themes/{имя вашей темы}/woocommerce/content-single-product.php.
- В нижней его части вы найдете подключение файла похожих товаров выглядит он так:
1<?php if(etheme_get_option('show_related')) woocommerce_output_related_products(); ?>
1<?php require_once( trailingslashit( get_template_directory() ). 'woocommerce/single-product/product-new.php' ); ?> - Теперь, когда путь для подключения файла мы прописали, необходимо создать сам файл. Создаем файл по пути /wp-content/themes/{имя вашей темы}/woocommerce/single-product/product-new.php
- В созданный файл product-new.php копируем содержимое файла related.php который находится по пути /wp-content/themes/{имя вашей темы}/woocommerce/single-product/related.php.
- Проверьте как выводятся товары в карточке товара. Если все сделано правильно, то у вас будет 2 блока похожих товаров.
- В файле product-new.php измените название блока на «Новинки в интернет магазине».
- Далее для вывода новых товаров нам будет необходимо изменить массив с параметрами для функции apply_filters( ‘woocommerce_related_products_args’, array( … ).
- Ниже я приведу пример как это сделано у меня.
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 |
<?php /** * Related Products * * @author WooThemes * @package WooCommerce/Templates * @version 3.0.0 */ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly global $product, $woocommerce_loop; $posts_per_page = 8; // updated for woocommerce v3.0 $related = array_map( 'absint', array_values( wc_get_related_products( $product->get_id(), $posts_per_page ) ) ); if ( sizeof( $related ) == 0 ) return; echo '<h2 class="products-title"><span>Новинки в интернет магазине</span></h2>'; $args = apply_filters( 'woocommerce_related_products_args', array( 'post_type' => 'product', 'ignore_sticky_posts' => 1, 'no_found_rows' => 1, 'posts_per_page' => $posts_per_page, 'orderby' => array('meta_value' => 'ASC', 'date' => 'DESC'), //'post__in' => $related, 'post__not_in' => array( $product->id ) ) ); $slider_args = array( //'title' => esc_html__( 'Related Products', 'xstore' ) ); etheme_create_slider( $args, $slider_args ); wp_reset_postdata(); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$args = apply_filters( 'woocommerce_related_products_args', array( 'post_type' => 'product', 'ignore_sticky_posts' => 1, 'no_found_rows' => 1, 'posts_per_page' => $posts_per_page, 'orderby' => array('meta_value' => 'ASC', 'date' => 'DESC'), //'post__in' => $related, 'post__not_in' => array( $product->id ), 'tax_query' => array( 'relation' => 'OR', array( 'taxonomy' => 'product_cat', 'field' => 'id', 'terms' => array($term_cat_id) ) ) ) ); |
Данный код для вывода аукционных товаров был протестирован с версией WooCommerc 3.0, в меньшей или старшей версии код может немного изменяться.

/*

- Базовый курс по веб-дизайну;
- Верстка сайтов;
- Общий курс по CMS WordPress и продолжение курса по разработке шаблонов;
- Разработка сайтов на PHP.