Хуки WordPress

Как убрать способ оплаты для определенной категории товаров в WooCommerce

WooCommerce

WooCommerce — это мощный инструмент для создания интернет-магазинов на WordPress. Однако иногда возникает необходимость настроить его функциональность под конкретные требования бизнеса. Например, может потребоваться отключить определенные способы оплаты для товаров из конкретной категории. Это может быть полезно, если для некоторых товаров действуют особые условия оплаты или доставки.

В этой статье мы рассмотрим, как можно программно отключить способ оплаты для определенной категории товаров в WooCommerce с помощью хуков и PHP-кода.

Постановка задачи

Предположим, у вас есть категория товаров с ID 122, и вы хотите отключить способ оплаты «Наличными при получении заказа» (data-gateway_id=»cod») для всех товаров из этой категории. Это означает, что если в корзине есть хотя бы один товар из этой категории, то способ оплаты «Наличными при получении» заказа должен быть скрыт.

Как убрать способ оплаты для определенной категории товаров в WooCommerce
Категория с ID 122
Как убрать способ оплаты для определенной категории товаров в WooCommerce
Где найти нужный нам способ оплаты
Как убрать способ оплаты для определенной категории товаров в WooCommerce
Где найти data-gateway_id=»cod»

Решение

Для решения этой задачи мы воспользуемся хуком woocommerce_available_payment_gateways, который позволяет фильтровать доступные способы оплаты на странице оформления заказа. Мы добавим пользовательскую функцию, которая будет проверять, есть ли в корзине товары из указанной категории, и, если есть, отключать «Наличными при получении».

Шаги реализации

  1. Добавление хука и функции: Мы добавим фильтр, который будет вызывать нашу функцию для проверки категории товаров в корзине.
  2. Проверка категории товаров: В функции мы пройдемся по всем товарам в корзине и проверим, принадлежат ли они указанной категории.
  3. Отключение способа оплаты: Если товар из нужной категории найден, мы отключим способ оплаты «Наличными при получении».

Код решения

Объяснение кода

  1. Хук woocommerce_available_payment_gateways: Этот хук позволяет нам фильтровать список доступных способов оплаты на странице оформления заказа.
  2. Функция wtwh_unset_gateway_by_category: Эта функция принимает массив доступных способов оплаты и возвращает его после проверки.
  3. Проверка на админку и страницу оформления заказа: Мы не хотим, чтобы этот код выполнялся в админке или на других страницах, кроме страницы оформления заказа.
  4. Цикл по товарам в корзине: Мы проходим по всем товарам в корзине и проверяем, принадлежат ли они категории с ID 122.
  5. Отключение «Наличными при получении»: Если товар из нужной категории найден, мы отключаем способ оплаты «Наличными при получении», удаляя его из массива доступных способов оплаты.

Заключение

С помощью этого кода вы можете легко отключить определенные способы оплаты для товаров из конкретной категории в WooCommerce. Этот подход гибок и может быть адаптирован под различные сценарии, например, для отключения нескольких способов оплаты или для работы с несколькими категориями.

Если у вас возникнут вопросы или потребуется дополнительная настройка, не стесняйтесь обращаться к документации WooCommerce или к профессиональным разработчикам.