Я все еще только начинаю разбираться в 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 на основе условий диапазона , что кажется особенно актуальным, но намного выше моей головы!
Любая помощьоценили!
Дайте мне знать, если что-то из этого неясно, сегодня я запутываюсь из-за недостатка сна.