- Доступные методы оплаты в зависимости от выбранного способа доставки
- Комментарии — 10
- Отображение методов оплаты в зависимости от страны или города покупателя
- Как полностью удалить стандартные методы оплаты?
- WordPress.org
- Русский
- Исключить метод оплаты
- Скрываем способы доставки, если доступна бесплатная доставка
Доступные методы оплаты в зависимости от выбранного способа доставки
Продолжаю публиковать уроки про «условные методы оплаты», вы уже можете прочекать ранее опубликованные, в которых мы отключали методы оплаты в зависимости от суммы заказа и в зависимости от страны/города покупателя.
И конечно же, не забывайте, что у меня на сайте есть видеокурс по WooCommerce, в котором мы создаём собственную тему для интернет-магазина с нуля на основе вёрстки.
Сегодня мы попробуем включать и отключать доступные на странице оформления заказа и на странице оплаты конкретного заказа методы оплаты в зависимости от способа доставки, выбранного покупателем.
Сам сниппет кода выглядит вот так и вы вполне можете его вставить в functions.php вашей текущей темы, или же дочерней – если не хотите, чтобы всё слетело после обновлений.
- Прежде всего, мы ничего не делаем на странице оплаты конкретного заказа, для этого и добавлено условие функцией is_wc_endpoint_url(), про страницу оплаты заказа чуть ниже.
- Как видно из кода, на 10-й строчке я показал, как можно узнать ярлык определённого способа доставки.
- Если вы не знаете как узнать ярлык метода оплаты, то я чуть подробнее остановился на этом в конце этого урока.
Ну и конечно же, нужно немного изменить, либо создать отдельный код для страниц оплаты конкретного заказа (это в личном кабинете пользователя), разница заключается в том, что на тех страницах нет корзины и способ доставки нужно получать из заказа.
Давайте познакомимся с методами объектами WC_Order для получения информации о доставки, вы можете использовать get_shipping_methods() , чтобы получить массив со всей информацией, можете использовать get_shipping_method() , чтобы получить только название способа доставки. Я вот например использовал проверку при помощи has_shipping_method() , передав туда ярлык способа доставки.
Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.
Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!
Комментарии — 10
Спасибо за подсказку, как раз искал подобный способ. Со своей задачей данный код справляется великолепно! Только в моем случае появились побочные эффекты! Не знаю каким боком но девятая строка в первом сниппете:
$chosen_methods = WC()->session->get( ‘chosen_shipping_methods’ ); .
в моем случае также повлияла на отображение списка меню в редакторе меню администратора, то есть область «Структура меню» пропала полностью! В визуальных настройках редактор меню остался. В логах нашел следующую информацию: «PHP Fatal error: Uncaught Error: Call to a member function get() on null in . » ну и далее путь к этой строке сниппета. После того как закомментировал данную строку редактор меню заработал.
Это как то лечится?
Спасибо за вашу внимательность, да, можно легко исправить условием is_admin() , код обновил.
Источник
Отображение методов оплаты в зависимости от страны или города покупателя
Недавно я опубликовал пост об отображении методов оплаты в зависимости от суммы заказа покупателя. Сегодня же попробуем законнектить их к его стране или городу.
Если у вас возникают трудности с WooCommerce, либо же, наоборот, вы не хотите довольствоваться вставкой готовых сниппетов кода, то вэлкам ту мой видеокурс.
В этом примере давайте попробуем отключить PayPal для… Монако? 😁 Палка вроде там не поддерживается.
Делать будем при помощи уже знакомого нам хука woocommerce_available_payment_gateways .
- paypal – это ярлык стандартного шлюза PayPal, есть также и другие стандартные – cod , bacs , cheque
- MC – двухбуквенный ISO-код страны, в данном случае Монако.
- Возмжно в каких-то ситуациях вам нужно будет использовать WC()->customer->get_shipping_country() вместо WC()->customer->get_billing_country() .
- Потестил этот код в functions.php моей дочерней темы StoreFront – и он работает как для страницы Оформления заказа, так и для страницы оплаты конкретного заказа.
- Если вы хотите проверять не страну покупателя, а например город, то можете изменить условие например так:
Если у вас возникают труности с тем, как узнать ID (ярлык) платёжного шлюза WooCommerce, то прошу взглянуть на этот скриншот:
Заходим на вкладку платежи, кликаем правой кнопкой по любому методу оплату и выбираем «Проинспектировать элемент»
Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.
Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!
Источник
Как полностью удалить стандартные методы оплаты?
Когда вы устанавливаете WooCommerce, у вас по умолчанию доступны несколько методов оплаты: «Прямой банковский перевод», «Чековые платежи», «Оплата для доставке» и «PayPal».
Понятное дело, что для русскоязычных стран некоторые из них неактуальны.
Также не могу не порекомендовать вам свой видеокурс по WooCommerce 🙃
Понятное дело, что можео включать/выключать каждый метод в настройках, но что, если вы хотите вообще убрать возможность использовать какой-то из них? Удалить с концами?
На тот случай, если PayPal напрягает вас своим нахождением в настройках, вы можете от него избавиться. То же самое касается и остальных трёх методов.
Делается это очень легко – вставкой следующего кода в functions.php вашей текущей темы или же дочерней темы.
- В этом примере мы не можем сделать например unset( ‘WC_Gateway_BACS’ ) , потому что имеем дело с нумерованным массивом, у которого ключи – цифры.
- Также мы не можем переопределить массив с нуля, потому что тогда мы не сможем добавить никакой новый метод оплаты через установку плагина например.
В итоге в моём примере получилось так:
Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.
Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!
Источник
WordPress.org
Русский
Исключить метод оплаты
Здравствуйте, помогите пожалуйста решить задачу:
У меня есть две зоны доставки (Город1, Город2).
Во фронте реализовано одним выпадающим списком.
(
Город1,Ул. Название,
Город1, Ул. Название,
…..
Город2, Ул Название,
Город2, Ул Название,
)
И два метода оплаты (картой через гейт, оплата при доставке).
Задача при выборе Города2 скрыть метод оплаты картой.
Понимаю как это должно быть,
Что-то типо
но на практике не получатеся (
Методы оплаты привязываются к способам доставки. Это штатный функционал
https://docs.woocommerce.com/document/setting-up-shipping-zones/
Где привязываются? Тыкните пальцем )
Штатно только методы доставки можно привязать к зоне (единая ставка ,бесплатная, самовывоз), об этом в доке и написано.
Мне нужно отключить оплату картой в оформлении заказа при выборе другого города из списка.
Где привязываются? Тыкните пальцем )
не понимаю, как мне это поможет убрать «оплату картой».
Это скриншот с метода «оплата при доставке» там есть такое замечательное поле как «включено для способов доставки». В других методах такого нет. Поэтому я и думал сделать это в коде.
У меня в обоих городах есть «оплата при доставке», мне нужно в одном из городов отключить возможность оплаты по карте.
Попробуйте такой сниппет:
kword Получилось! Большое спасибо!)
Источник
Скрываем способы доставки, если доступна бесплатная доставка
Вполне возможно, что в каких-то ситуациях вы не захотите отображать некоторые из способов доставки в том случае, если для вашего покупателя доступна опция бесплатной доставки.
И в этом небольшом уроке мы с вами попробуем это реализовать при помощи сниппета для functions.php .
Если вы хотите немного расширить свои знания по WooCommerce и уметь гораздо больше, чем вставлять готовые сниппеты кода, то рекомендую вам мой видеокурс 🚀
Делать это мы будем при помощи фильтр-хука woocommerce_shipping_rates :
free_shipping:1 и flat_rate:2 – это идентификаторы способов доставки, на разных сайтах они всегда разные, понятно, что вы можете узнать их прямо внутри этого хука при помощи print_r( $rates ) , но есть и более мягкое решение:
Нужно лишь в браузере проинспектировать соответствующий элемент.
Как вы возможно догадались, то эти условия можно устанавливать не обязательно для бесплатных способов доставки, а вообще для любых других.
И да, не забудьте потом почистить кэш в админке, для этого переходим в WooCommerce > Статус > Инструменты и нажимаем соответствующую кнопку напротив транзитов WooCommerce.
И напоследок хочу показать вам чуть более универсальный код, который позволит скрыть все способы доставки в случае, если доступна бесплатная, и тут вам даже не придётся заморачиваться с поиском ID способов доставки:
Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.
Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!
Источник