✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Посібник із додавання спеціальних комісій до WooCommerce Checkout за кодом

8

У деяких випадках вам може знадобитися додати комісію до суми кошика. Іноді лише за умови виконання певної умови, наприклад, залежно від суми кошика або місця доставки. З WooCommerce додавати комісію досить просто – насправді набагато легше, ніж додавати знижку. У цій публікації ми дізнаємося, як додати індивідуальну комісію до WooCommerce.

WooCommerce має вбудовану функцію в об’єкт cart для додавання комісій. Все, що вам потрібно, це підключитися до правильної дії та за допомогою наданого об’єкта cart викликати функцію, щоб додати комісію. WooCommerce автоматично відображатиме комісії у кошику та загальну суму оформлення замовлення. Ви вирішуєте ярлик і розмір комісії.

Посібник із додавання спеціальних комісій до WooCommerce Checkout за кодом

Важливо зауважити, що сума комісії не може бути від’ємною – таким чином клієнт отримує знижку. Раніше цей «хак» працював у старих версіях WooCommerce, але зараз ні.

Давайте розберемося в деталях коду! Єдиний гачок, про який вам слід потурбуватися, це woocommerce_cart_calculate_fees. Усередині цього гачка ви можете отримати об’єкт кошика, зателефонувавши WC()->cart. За допомогою цього об’єкта ви можете викликати add_fee(), який приймає чотири параметри (ймовірно, спочатку вам знадобляться лише два); add_fee($fee_name, $amount_in_float, $taxable_boolean, $tax_class_string). Перші два пояснюються самі за себе. Третій параметр — це логічне значення, яке визначає, чи оподатковується комісія чи ні. І четвертий — за надання класу оподаткування збору (якщо третій параметр вірний). Але його можна залишити порожнім для стандартного податкового класу.

Додавання фіксованої комісії

Додавання індивідуальної комісії здійснюється в найпростішій формі так:

Першим кроком є ​​запобігання додаванню комісії, якщо ми перебуваємо в адмінці або якщо Ajax виконується. Далі ми викликаємо add_fee()об’єкт cart. Це додасть комісію під назвою «Невелика комісія» зі значенням 5. Значення буде в будь-якій валюті у вашому магазині. Якщо валютою магазину встановлено долари, вона стає 5 дол. Налаштуйте назву та суму відповідно до ваших потреб.

Додавання комісії у відсотках від суми кошика

Якщо ви хочете, щоб сума комісії була відсотком від суми кошика, вам просто потрібно обчислити її інакше. Пам’ятайте, що ми завжди маємо доступ до об’єкта cart шляхом виклику, WC()->cartі звідти ми можемо отримати підсумки.

Наведений вище код додасть комісію в розмірі 5% від суми кошика, тобто загальну кількість елементів у кошику (get_cart_contents_total()) плюс вартість доставки кошика (get_shipping_total()). Налаштуйте ставку та які суми включити або виключити з того, що вам потрібно.

Тож це дуже добре, але в деяких випадках ми можемо захотіти налаштувати, коли додавати комісію. Можливо, ви хочете додати комісію лише за певний спосіб доставки, спосіб оплати або на основі загальної вартості кошика. Процес такий самий, ми просто додаємо комісію, лише якщо виконуються наші умови.

Додавання комісії в залежності від суми кошика

Скажімо, ви хотіли додати комісію, лише якщо загальна сума кошика була меншою за певну суму. Припустімо, ви хочете додати комісію за обробку невеликих сум. Ви можете зробити це так:

Використовуйте WC()->cart->get_cart_contents_total(), щоб отримати плаваюче число загальної суми кошика, за винятком доставки. (Якщо ви також хочете включити доставку, подивіться вище в додаванні відсоткової комісії, щоб отримати загальну суму доставки). Тоді зробіть свої порівняння.

Ви також можете перевернути його та вирішити додати комісію, якщо кошик перевищує певний ліміт.

Додавання комісії в залежності від місця доставки

Ви також можете додати комісію залежно від місця доставки, наприклад, країни. Подібно до отримання об’єкта cart, ми можемо використовувати WC()->customerоб’єкт customer. Майте на увазі, що коли клієнт не ввійшов у систему та ще не прийшов до каси та не заповнив свою адресу, значення об’єкта клієнта будуть порожніми або стандартними для вашого магазину.

Вам потрібно буде знати код країни – ось чудова довідка про код країни. Ось приклад додавання комісії, якщо клієнт із Норвегії.

Додаткова комісія в залежності від обраного способу доставки

Отримати спосіб доставки трохи складніше, оскільки він залежить від сеансу користувача та не надходить у «гарному зрозумілому форматі». Ви можете отримати поточний обраний спосіб доставки за допомогою WC()->session->get('chosen_shipping_methods'). Зауважте, що вказано «methods», а не «method», тому повертається масив. Зазвичай масив містить один елемент, де кожен елемент складається з рядків ідентифікатора доставки, двокрапки та ідентифікатора після нього. Я рекомендую використовувати рядкові методи PHP, щоб перевірити, чи містить рядок ідентифікатор, наприклад strpos(), а не його рівність.

Додавання комісії в залежності від обраного способу оплати

Якщо ви бажаєте додати комісію залежно від обраного платіжного шлюзу, ви можете отримати поточний вибраний платіжний шлюз за допомогою WC()->session->get('chosen_payment_method')та порівняти його назву (наприклад, для Paypal це поверне 'paypal'). Однак ви можете помітити, що коли клієнт перемикається між платіжними шлюзами під час оформлення замовлення, комісія не додається та не видаляється динамічно. Тож вам потрібно буде додати додатковий Javascript, щоб WooCommerce оновлював кошик, щоб ваша плата працювала стабільно.

Для додавання Javascript, який ми підключаємо woocommerce_review_order_before_payment, який виникає безпосередньо перед платіжною коробкою в касі та виводить вбудований сценарій. Усе, що робить код, це запускає перехоплення WooCommerce update_checkoutщоразу, коли змінюється вибір методу оплати. Це гарантує, що всі необхідні PHP-методи та хуки запускаються (включаючи платний хук) кожного разу, коли кошик оновлюється.

Додавання комісії в залежності від того, які продукти є в кошику

Я згадував про це раніше, але згадаю ще раз: ви маєте повний доступ до об’єкта кошика за допомогою WC()->cart, тож ви можете шукати у вмісті кошика певний ідентифікатор продукту та додавати комісію, якщо він існує у кошику.

Використання WC()->cart->get_cart_contents()повертає масив усіх продуктів у кошику. Ви можете пройти через це за допомогою простого foreachциклу та перевірити кожен продукт на потрібний стан, або якщо ви просто хочете перевірити ідентифікатори, ви можете витягти всі ідентифікатори продукту в один рядок так:

У наведеному нижче прикладі показано, як можна додати комісію залежно від того, що кошик містить продукт із певним ідентифікатором:

Ви також можете використовувати подібні операції для отримання кількості, якщо вам потрібно додати комісію, коли клієнт додає дійсно велику кількість чогось.

На закінчення

Ця публікація показала вам, як додати спеціальну комісію, і на п’яти прикладах, як додати комісію залежно від певних умов. Ці умови — це все, з чим я стикався і міг придумати, і вони мали б принаймні дати підказки щодо того, як отримати інформацію, щоб надалі налаштувати свої умови. Дайте мені знати, чи вони спрацювали для вас, чи ви знайшли інший стан, про який я не думав!

Джерело запису: awhitepixel.com

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі