Как автоматически установить перекрестную продажу в зависимости от категории продукта - PullRequest
2 голосов
/ 11 апреля 2020

Я пытаюсь изменить раздел перекрестных продаж на странице корзины в WooCommerce. Я хочу отобразить случайные товары из той же категории в разделе перекрестных продаж.

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

или если у них есть товары из нескольких категорий к тому времени просто выбирайте два наугад.

Есть ли способ сделать это или это случай необходимости go через каждый продукт индивидуально, чтобы выбрать продукты перекрестных продаж?

спасибо за любая помощь

1 Ответ

1 голос
/ 11 апреля 2020

Следующий код автоматически возвращает $cross_sells идентификаторы, которые относятся к категории (категориям) продуктов из корзины

function my_cart_crosssell_ids( $cross_sells, $cart ) {

    // Set emtpy array
    $product_cats_ids = array();
    $product_cats_ids_unique = array();

    foreach ( $cart->get_cart() as $cart_item ) {       
        // Get product id
        $product_id = $cart_item['product_id'];

        // Get current product categories id(s) & add to array
        $product_cats_ids = array_merge( $product_cats_ids, wc_get_product_term_ids( $product_id, 'product_cat' ) );
    }

    // Not empty
    if ( !empty( $product_cats_ids ) ) {
        // Removes duplicate values
        $product_cats_ids_unique = array_unique( $product_cats_ids, SORT_REGULAR );

        // Get product id(s) from a certain category, by category-id
        $product_ids_from_cats_ids = get_posts( array(
            'post_type' => 'product',
            'numberposts' => -1,
            'post_status' => 'publish',
            'fields' => 'ids',
            'tax_query' => array(
                array(
                    'taxonomy' => 'product_cat',
                    'field' => 'id',
                    'terms' => $product_cats_ids_unique,
                    'operator' => 'IN',
                )
            ),
        ) );

        // Removes duplicate values
        $cross_sells = array_unique( $product_ids_from_cats_ids, SORT_REGULAR );
    }

    return $cross_sells;
}
add_filter( 'woocommerce_cart_crosssell_ids', 'my_cart_crosssell_ids', 10, 2 );
...