Как объединить несколько однотипных карточек товара в одну?

Ссылка скопирована
1 ответ

Здравствуйте. Вариации товара на сайт залиты как простые товары и "связаны" плагином WPC Linked Variation for WooCommerce. То есть, в карточке товара этот плагин выводит все размеры этого товара. При клике на другой размер мы попадаем на этот же товар но с другим размером, ссылкой, описанием, характеристиками. Заливать товар как вариативный в этом случае не подходит. Но, есть одна проблема. В каталоге теперь несколько карточек товара с одним фото. Возможно ли, в каталоге объединить эти карточки в одну?

Дополнительно:

Ответы:

Как вариант, в цикле вывода товаров каталога проверять есть ли у этого товара родительский товар к которому он привязан (смотрите доки WPC или в каком мета-поле плагин хранит запись о родителе). И если родитель имеется, то просто переходим к следующей итерации в цикле вывода -> continue;
Таким образом в каталоге останется только родительский товар.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Сергей Миронов Ответ

Да, в каталоге можно показывать только одну карточку из группы связанных простых товаров. Но правильная реализация зависит от того, как WPC Linked Variation хранит связь: через post meta, taxonomy, group id или свой объект. Нужно найти мета-ключ группы и исключать из каталога все дочерние/неосновные товары.

Общий принцип такой: у каждой группы должен быть один главный товар, а остальные товары получают метку «не показывать в каталоге». Если плагин хранит ID родителя в мета-поле, фильтр может выглядеть так:

add_action('woocommerce_product_query', function ($query) {
    if (is_admin() || is_search()) {
        return;
    }
 
    $meta_query = (array) $query->get('meta_query');
 
    $meta_query[] = [
        'relation' => 'OR',
        [
            'key'     => '_linked_parent_id',
            'compare' => 'NOT EXISTS',
        ],
        [
            'key'     => '_linked_parent_id',
            'value'   => '',
            'compare' => '=',
        ],
    ];
 
    $query->set('meta_query', $meta_query);
});

add_action('woocommerce_product_query', function ($query) { if (is_admin() || is_search()) { return; } $meta_query = (array) $query->get('meta_query'); $meta_query[] = [ 'relation' => 'OR', [ 'key' => '_linked_parent_id', 'compare' => 'NOT EXISTS', ], [ 'key' => '_linked_parent_id', 'value' => '', 'compare' => '=', ], ]; $query->set('meta_query', $meta_query); });

_linked_parent_id здесь пример, его нужно заменить на реальный ключ плагина. Найти его можно в таблице wp_postmeta по ID товара или через экспорт метаполей.

Альтернативный путь без кода: для дублей поставить видимость каталога «скрытый» или «только поиск», а главный товар оставить видимым. Это проще и безопаснее, если групп немного. Если товаров много, делайте автоматизацию через реальный meta key плагина.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно