WooCommerce: Вывод кросселов на странице товара

Главная / Wordpress / WooCommerce: Вывод кросселов на странице товара

Напомню, кросселлы — это то, что идет в дополнение к товару (с этим товаром покупают), апселлы — похожие товары (аналогичный, но подороже например). Стояла задача вывести кросселлы не на странице корзины, как это стандартно происходит, а на странице карточки товара.

Понятно, что кросселлы предварительно нужно добавить в админке в карточке товара во вкладке «Сопутствующие».

Нашла такое решение.

Создаем свою функцию.

function nogtishop_crossels( $limit = 2, $columns = 2, $orderby = 'rand', $order = 'desc') {

global $product;

$cross_sells = array_filter( array_map( 'wc_get_product', $product->get_cross_sell_ids() ), 'wc_products_array_filter_visible' );

wc_set_loop_prop( 'name', 'cross-sells' );
wc_set_loop_prop( 'columns', apply_filters( 'woocommerce_cross_sells_columns', $columns ) );

// Handle orderby and limit results.
$orderby = apply_filters( 'woocommerce_cross_sells_orderby', $orderby );
$order = apply_filters( 'woocommerce_cross_sells_order', $order );
$cross_sells = wc_products_array_orderby( $cross_sells, $orderby, $order );
$limit = apply_filters( 'woocommerce_cross_sells_total', $limit );
$cross_sells = $limit > 0 ? array_slice( $cross_sells, 0, $limit ) : $cross_sells;

wc_get_template(
'cart/cross-sells.php',
array(
'cross_sells' => $cross_sells,

// Not used now, but used in previous version of up-sells.php.
'posts_per_page' => $limit,
'orderby' => $orderby,
'columns' => $columns,
)
);

}

Добавляем эту функцию через хук woocommerce_after_single_product_summary

add_action( 'woocommerce_after_single_product_summary', 'nogtishop_crossels', 20 );

Всё это прописала в functions.php дочерней темы. Предварительно убрала через отключение хука блок «Похожие товары» на этой же странице карточки товара.

remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20 );

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

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