Добавить товар в корзину по минимальной стоимости - как добавить диапазоны значений? - PullRequest
0 голосов
/ 08 декабря 2018

Я все еще только начинаю разбираться в PHP, поэтому мне интересно, будет ли кто-нибудь достаточно терпелив, чтобы указать мне направление изменения приведенного ниже кода?

Код как-is добавляет определенный продукт в корзину пользователя, вошедшего в систему, когда достигается определенное значение (и удаляет его, если нет).

Я надеюсь, что смогу добавить к нему, так чтоЕсть несколько подарков, добавленных в корзину в зависимости от диапазона промежуточных итогов (например, Подарок 1 добавляется в корзину, когда диапазон составляет 75-99, ЗАМЕНЕН с Подарком 2, когда диапазон составляет 100-150 и т. д.).

Я много читал здесь и в других местах, но, поскольку я всего лишь относительный n00b, я немного ошеломлен!Учитывая, что существующий код выполняет большую часть того, что мне нужно, я уверен, что должен быть (относительно) простой способ добавить функцию, описанную выше ...

Взято из Добавление рекламного продукта приопределенная сумма в корзине достигнута ответ, с незначительным изменением:

add_action( 'woocommerce_before_calculate_totals', 'adding_promotional_product', 10, 1 );
function adding_promotional_product( $cart ) {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

    $promo_id = 7161; // <=== <=== <=== Set HERE the ID of your promotional product
    $targeted_cart_subtotal = 75; // <=== Set HERE the target cart subtotal
    $has_promo = false;
    $subtotal = 0;

    if ( ! $cart->is_empty() && is_user_logged_in() ) {

        // Iterating through each item in cart
        foreach ($cart->get_cart() as $item_key => $cart_item ){
            $product_id = version_compare( WC_VERSION, '3.0', '<' ) ? $cart_item['data']->id : $cart_item['data']->get_id();
            // If Promo product is in cart
            if( $product_id == $promo_id ) {
                $has_promo = true;
                $promo_key= $item_key;
            } else {
                // Adding subtotal item to global subtotal
                $subtotal += $cart_item['line_subtotal'];
            }
        }
        // If Promo product is NOT in cart and target subtotal reached, we add it.
        if( ! $has_promo && $subtotal >= $targeted_cart_subtotal ) {
            $cart->add_to_cart( $promo_id );
            // echo 'add';
        // If Promo product is in cart and target subtotal is not reached, we remove it.
        } elseif( $has_promo && $subtotal < $targeted_cart_subtotal ) {
            $cart->remove_cart_item( $promo_key );
        }
    }
}

Единственные изменения в его коде, которые я сделал до сих пор, касаются идентификатора продукта и суммы промежуточного итога, а также изменения

if ( ! $cart->is_empty() ) {

до

if ( ! $cart->is_empty() && is_user_logged_in() ) { 

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

Я действительно не уверен, как бы я ввел «если диапазон A делает X, если диапазон B делает Y» к коду Лоика.Может кто-нибудь, пожалуйста, дайте мне знать правильный и чистый способ сделать это?

Я также нашел Автоматически добавлять товары в корзину WooCommerce на основе условий диапазона , что кажется особенно актуальным, но намного выше моей головы!

Любая помощьоценили!

Дайте мне знать, если что-то из этого неясно, сегодня я запутываюсь из-за недостатка сна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...