Woocommerce отключить способы оплаты

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

Продолжаю публиковать уроки про «условные методы оплаты», вы уже можете прочекать ранее опубликованные, в которых мы отключали методы оплаты в зависимости от суммы заказа и в зависимости от страны/города покупателя.

И конечно же, не забывайте, что у меня на сайте есть видеокурс по 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 — пишите. Я и моя команда будем рады вам помочь!

Источник

Оцените статью
Разные способы