/ Сайтостроение / Wordpress / «Правильные» похожие товары в woocommerce

«Правильные» похожие товары в woocommerce

HIT

21.09.2015

8422

11

Похожие товары реализованы не совсем грамотно: если добавлять товарам метки (присущие большинству товаров, например 33 класс у ламината), то похожие товары будут выводится практически одни и те же.
Исправляем данный недочет так: в нашей локализованной версии woocommerce находим файл /themes/current-theme/woocommerce/single-product/related.php и меняем строку

$related = $product->get_related( $posts_per_page );

на

$related = get_related_custom($product->id);

А в файл funсtions.php добавляем код

//New "Related Products" function for WooCommerce
function get_related_custom( $id, $limit = 5 ) {
global $woocommerce;

// Related products are found from category and tag
$tags_array = array(0);
$cats_array = array(0);

// Get tags
/*
$terms = wp_get_post_terms($id, 'product_tag');
foreach ( $terms as $term ) $tags_array[] = $term->term_id;
*/
// Get categories (removed by NerdyMind)

$terms = wp_get_post_terms($id, 'product_cat');
foreach ( $terms as $term ) $cats_array[] = $term->term_id;
// Don't bother if none are set
if ( sizeof($cats_array)==1 && sizeof($tags_array)==1 ) return array();

// Meta query
$meta_query = array();
$meta_query[] = $woocommerce->query->visibility_meta_query();
$meta_query[] = $woocommerce->query->stock_status_meta_query();

// Get the posts
$related_posts = get_posts( apply_filters('woocommerce_product_related_posts', array(
'orderby' => 'rand',
'posts_per_page' => $limit,
'post_type' => 'product',
'fields' => 'ids',
'meta_query' => $meta_query,
'tax_query' => array(
'relation' => 'OR',
array(
'taxonomy' => 'product_cat',
'field' => 'id',
'terms' => $cats_array
),
array(
'taxonomy' => 'product_tag',
'field' => 'id',
'terms' => $tags_array
)
)
) ) );
$related_posts = array_diff( $related_posts, array( $id ));
return $related_posts;
}
add_action('init','get_related_custom');

В данном коде объединены 2 метода выборки Похожих товаров, но выборка по тэгам отключена (лучше ее и не включать).

Тэги:

Поделится информацией с друзьями

  • Похожие записи
  • Комментарии
  • Вложения
Переход на WC 3.0

Переход на WC 3.0

Когда видишь в панели плагинов обновление woocommerce до версии 3.0 — ощущение как будто резко наступил Новый год! Что же нового в версии 3.0: изучаем, тестим, разбираемся. Галерея изображений Теперь Читать далее »

Фильтры Woocommerce

Фильтры Woocommerce

В базовую комплектацию Woocommerce входит набор виджетов для фильтрации товаров. Но данные виджеты необходимо несколько доработать. WooCommerce Навигация по слоям В этом виджете необходимо задать атрибут товара по которому будет Читать далее »

/ /
Статусы заказов

Статусы заказов

Как и любой интернет-магазин Woocommerce присваивает заказам определенные статусы в зависимости от отплаты и формирования заказа. Существует 7 различных статусов заказа: В ожидании оплаты (Pending payment) Обработка (Processing) На удержании Читать далее »

Добавить комментарий

11 комментариев

  1. mur

    а как можно исключить определенные категории из похожих товаров

    1. maker1447
      maker1447

      Я думаю так: в запрос $related_posts = get_posts( apply_filters(‘woocommerce_product_related_posts’, array(
      попытаться добавить: либо ‘exclude’ => категорию woocommerce которая не нужна, либо еще вот вариант попался:

      $args[‘tax_query’] = array(
      array(
      ‘taxonomy’ => ‘category’,
      ‘terms’ => array(‘cat’, ‘dog’),
      ‘field’ => ‘slug’,
      ‘operator’ => ‘NOT IN’,
      ),
      );
      query_posts($args);

    2. maker1447
      maker1447

      Я наверное поторопился с ответом, ведь в вышеописанном решении мы делаем чтобы похожие товары выводились из той же категории что и товар. Поэтому исключать ее не имеет смысла.

  2. Николай

    Есть такой прикол, я поставил вывод 6 похожих. Но если к товару присвоена только 1 категория, выводится почему-то 5, если больше 1, то 6, подскажите как исправить

    1. maker1447
      maker1447

      А в категории всего сколько товаров? больше 5шт?

  3. Николай

    теперь в версии вукомерца 2.6.8 всё по другому в файлике related.php, данный способ ещё можно реализовать?

    1. maker1447
      maker1447

      Не готов утверждать со 100% уверенностью, но должен работать и на последней версии. У меня на сайтах работает.

      1. Егор

        Ясное дело работает, вы же это в шаблоне прописали!

        А сейчас в related.php это встречается только здесь:
        if ( ! $related = $product->get_related( $posts_per_page ) ) {
        return;
        }
        Что, ясен пень, не дает ничего

  4. Рэй

    Подскажите, как поменять выдачу Related products в теме MediaCenter для WP? Хотя бы где искать файл, отвечающий за выдачу? Нигде не нашел.. У меня цель, чтобы похожие товары показывались не из категорий, как это по умолчанию, а из подкатегорий. Срок Техподдержки уже прошел, поэтому официально вопрос негде задать.

  5. Анна

    Здравствуйте, а как выбрать похожие товары по одному конкретному атрибуту

    1. Alexandr
      Alexandr

      Добрый день! Сам не пробовал. Нашел вот такой плагин Woo Related Products (6000+ установок). Судя по количеству установок, должен работать нормально. И функционал вывода похожих товаров по атрибутам в описании есть.

«Правильные» похожие товары в woocommerce
Выдвижной Footer
Рекомендации для васВыдвижной FooterOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.