Отредактировано: Проблема: Количество плагинов Force Sells должно меняться в зависимости от количества товара, добавленного в корзину ИЛИ оно должно варьироваться в зависимости от выбранного варианта (pa_size).
Другими словами, мыпытаются заставить продать пакеты со льдом.Если клиент покупает менее 4 (количество) продуктов, мы хотим принудительно продать 1 пакет со льдом.Если они покупают 8 (количество) продуктов, мы хотим заставить продать 2 пакета со льдом.И, если они приобретут 1 (количество) из 6 пакетов, мы хотим продать 2 пакета со льдом.И, если они покупают 1 (количество) из 12 упаковок, мы хотим продать 3 упаковки со льдом.Для всего остального заставьте продать 1 Ice Pack.
Я бы очень хотел узнать, как это осуществить.
Мне нужна переменная $ amountbj, чтобы быть результатом, потому что она передается большим количеством кода дальше вниз.
Вывод, который я сейчас получаю, - $ amountbj = 3 - независимо от того.Результат, который я ожидаю, состоит в том, что $ amountbj варьируется в зависимости от количества и выбранного варианта продукта (то есть 6 упаковок файлов cookie, а не одного пакета файлов cookie).
Я прокомментировал ошибки в приведенном ниже коде.
$ product_size должна быть строкой, и затем я пытаюсь выяснить, содержит ли эта строка слова «6 пакетов» или «12 пакетов».Как получить выбранный вариант для сравнения?
Это полная функция из woocommerce-force-sells.php.Код, который я добавил, закомментирован с BJ - просто чтобы вы знали, что я добавил.
echo '<pre><code>', print_r($product->get_available_variations()), '
';выход();публичная функция add_force_sell_items_to_cart ($ cart_item_key, $ product_id, $ количество, $ var_id, $ variation, $ cart_item_data) {// Проверить, является ли этот продукт принудительным сам по себе, поэтому он не может принудительно заставить другие (чтобы предотвратить добавление в циклы), если(isset (WC () -> cart-> cart_contents [$ cart_item_key] ['вынужденный_быть]])) {$ force_by_key = WC () -> cart-> cart_contents [$ cart_item_key] [' force_by '];if (isset (WC () -> cart-> cart_contents [$ force_by_key])) {return;}} $ product = wc_get_product ($ product_id);$ force_sell_ids = array_filter ($ this-> get_force_sell_ids ($ product_id, array ('normal', 'synced')), array ($ this, 'force_sell_is_valid'));$ synced_ids = array_filter ($ this-> get_force_sell_ids ($ product_id, array ('synced')), array ($ this, 'force_sell_is_valid'));// BJ - ИЗМЕНИТЬ КОЛИЧЕСТВО ПАКЕТОВ ДЛЯ ЛЬДА, ЧТОБЫ ТОЧНО СКОЛЬКО НУЖНО В ЗАВИСИМОСТИ ОТ ЗАКАЗА // // Эта часть работает $ amountbj = '1';if ($ amount> '4') {$ amountbj = '2';} if ($ amount> '8') {$ amountbj = '3';} // эта часть не работает.Я пытаюсь сказать, «если выбранный вариант содержит строку« 6 Pack », то $ amountbj = что-то новое. // ПЕРВАЯ ПРОБЛЕМА: я получаю сообщение об ошибке» Предупреждение: strpos () ожидает, что параметр 1 будет строкой, массив задан в/home/mfpnuts/public_html/novo/wp-content/plugins/woocommerce-force-sells/woocommerce-force-sells.php on line // ВТОРАЯ ПРОБЛЕМА: $ amountbj принимает значение «3» независимо от выбранной опции.$ product_size = $ product-> get_available_variations ();if (strpos ($ product_size, '6 Pack')! == FALSE) {$ amountbj = '2';} if (strpos ($ product_size, '12 Pack ')! == FALSE) {$ amountbj =' 3 ';} // END BJ РЕДАКТИРУЕТ ДЛЯ КОЛИЧЕСТВА - больше правок в строках 390 и 400 if (! Empty ($ force_sell_ids)) {foreach ($ force_sell_ids as $ id) {$ cart_id = WC () -> cart-> generate_cart_id ($id, '', '', array ('required_by' => $ cart_item_key));$ key = WC () -> cart-> find_product_in_cart ($ cart_id);if (! empty ($ key)) {WC () -> cart-> set_quantity ($ key, WC () -> cart-> cart_contents [$ key] [$ amountbj]);} еще {$ args = array ();if ($ synced_ids) {if (in_array ($ id, $ synced_ids)) {$ args ['force_by'] = $ cart_item_key;}} // BJ изменил «количество» на «$ количествоbj»'Вариация' => ''), WC () -> cart-> cart_contents [$ cart_item_key]);$ result = WC () -> cart-> add_to_cart ($ params ['id'], $ params ['количество'], $ params ['var_id'], $ params ['вариация'], $ args);// Если продукт принудительной продажи не удалось добавить, не добавляйте основной продукт.«Может быть отфильтровано» if (пусто ($ result) && apply_filters ('wc_force_sell_disallow_no_stock', true)) {WC () -> cart-> remove_cart_item ($ cart_item_key);выбросить новое исключение (sprintf (__ ('% s также будет удалено, когда они будут проданы вместе.', 'woocommerce-force-sells'), $ product-> get_title ()));}}}}}