Почему некорректно выводятся cross sells?

Рейтинг: 0Ответов: 1Опубликовано: 15.03.2023

Помогите, пожалуйста, решить проблему некорректного вывода cross sells товаров. Задача в том, чтобы предлагать в нагрузку к текущему товару ещё несколько других.

Убираю вывод cross sell из корзины и вывожу в карточку товара:

remove_action( 'woocommerce_cart_collaterals', 'woocommerce_cross_sell_display' );
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_cross_sell_display');

Создаю два вариативных товара: a-product и b-product

Товару a-product присваиваю кросселлом родительский b-product, то есть не вариацию, а основной. Товару b-product, соответственно, присваиваю a-product как кросселл.

На выходе жду очевидную картинку, где к a-product предлагается в нагрузку b-product, и наоборот. А получаю ситуацию, в которой в карточке a-product предлагается b-product как кросселл, а в карточке b-product предлагается кросселл самого себя, то есть b-product.

В чём проблема?

Ответы

▲ 1Принят

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

Нужно переопределить функцию woocommerce_cross_sell_display() так, чтобы она использовала кросс-селл родительского товара для вариаций.