Принудительно продавать конкретный продукт WooCommerce ИЛИ его вариацию в отдельном заказе.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Принудительно продавать конкретный продукт WooCommerce ИЛИ его вариацию в отдельном заказе.

Сообщение Anonymous »

У меня есть код ниже, посвященный конкретному продукту WooCommerce Force, который будет продаваться в отдельном заказе, и пользователю 7uc1f3r.
Я хочу добавить к этому коду два других продукта. Первое изделие простое, два других — вариативные. Эти продукты имеют разные варианты веса, и мне нужно, чтобы только один из вариантов веса запускал сценарий и предотвращал добавление в корзину вместе с другими продуктами. Таким образом, код будет циклически перебирать массив идентификаторов продуктов (например, $product_id_alone_array = array("666","777","888");), проверяя, являются ли это простыми продуктами или переменными. Если продукт простой, запустите действие. Если продукт является переменным, ему нужно будет выбрать только один из идентификаторов варианта и выполнить действия.
Я работал над добавлением массив, определяющий, является ли продукт простым или переменным, но не может заставить код работать. Я не опубликовал свой дополнительный рабочий код, поскольку он может замутить ситуацию.
function filter_woocommerce_add_to_cart_validation( $passed, $product_id, $quantity, $variation_id = null, $variations = null ) {
// Product id to bought alone
$product_id_alone = 666;

// Set variable
$flag = false;

// If cart is NOT empty when a product is added
if ( ! WC()->cart->is_empty() ) {
// Generate a unique ID for the cart item
$product_cart_id = WC()->cart->generate_cart_id( $product_id_alone );

// Check if product is in the cart
$in_cart = WC()->cart->find_product_in_cart( $product_cart_id );

// If product is already in cart & product ID added is not equal to product ID alone
if ( $in_cart && ( $product_id != $product_id_alone ) ) {
$flag = true;
// Product ID alone is NOT in cart & product ID added is equal to product ID alone
} elseif( ! $in_cart && ( $product_id == $product_id_alone ) ) {
$flag = true;
}
}

// True
if ( $flag ) {
// Set error message
wc_add_notice( sprintf(
__( 'Product %s must be bought separately', 'woocommerce' ),
$product_id_alone,
), 'error' );

// Passed = false
$passed = false;
}

return $passed;
}
add_filter( 'woocommerce_add_to_cart_validation', 'filter_woocommerce_add_to_cart_validation', 10, 5 );


Подробнее здесь: https://stackoverflow.com/questions/792 ... separate-o
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»