Диагностика проблемы с платёжными системами в WooCommerce
В WooCommerce часто возникает необходимость отключить платёжные системы, которые не используются или мешают пользователям. Неправильное отключение может привести к отображению лишних вариантов оплаты на странице оформления заказа, что вызывает путаницу и снижает конверсию.
Первым шагом проверьте текущие активные методы оплаты на странице WooCommerce > Настройки > Платежи. Если платёжная система активна, но не нужна, её нужно корректно отключить. Иногда плагины или кастомный код могут автоматически подключать методы, даже если они отключены в настройках.
Как проверить, какие платёжные системы активны программно
add_action('wp_footer', function() {
if(current_user_can('administrator')) {
$gateways = WC()->payment_gateways()->get_available_payment_gateways();
echo '<pre>'.print_r(array_keys($gateways), true).'</pre>';
}
});Этот код выводит список доступных платёжных систем внизу сайта для администратора. Если вы видите там платёжные шлюзы, которые не должны отображаться — значит, они включены.
Пошаговое решение: отключение платёжных систем через код
Если стандартное отключение через админку не срабатывает (например, из-за сторонних плагинов или кастомных интеграций), используйте фильтр woocommerce_available_payment_gateways, чтобы убрать нужные шлюзы программно.
add_filter('woocommerce_available_payment_gateways', 'disable_unused_payment_gateways', 99);
function disable_unused_payment_gateways($gateways) {
// Список ID платёжных систем для отключения
$disabled_gateways = ['cod', 'bacs']; // Пример: наложенный платеж и банковский перевод
foreach ($disabled_gateways as $disabled_gateway) {
if (isset($gateways[$disabled_gateway])) {
unset($gateways[$disabled_gateway]);
}
}
return $gateways;
}Замените 'cod' и 'bacs' на ID платёжных систем, которые хотите отключить. ID можно узнать в настройках WooCommerce или с помощью предыдущего кода.
Если нужно отключить платёжную систему только для определённых условий
Например, отключить cheque для пользователей, которые не вошли в систему:
add_filter('woocommerce_available_payment_gateways', 'conditional_disable_gateway', 99);
function conditional_disable_gateway($gateways) {
if (!is_user_logged_in() && isset($gateways['cheque'])) {
unset($gateways['cheque']);
}
return $gateways;
}Проверка результата после внедрения
- Очистите кеш браузера и сайта (если установлен плагин кеширования).
- Откройте страницу оформления заказа в режиме инкогнито или другом браузере.
- Проверьте, что отключённые платёжные системы отсутствуют в списке доступных способов оплаты.
- Если платёжные системы отображаются, повторно проверьте правильность ID и наличие других плагинов, которые могут влиять на методы оплаты.
Частые ошибки и как их исправить
- Использование неправильных ID платёжных систем: иногда ID отличается от названия. Проверьте ID через
WC()->payment_gateways()->payment_gateways()или в документации. - Конфликты с плагинами: плагины для оплаты или интеграции могут перезаписывать методы оплаты. Временно отключите плагины, чтобы проверить влияние.
- Кэширование: кешированные страницы могут показывать старый список платёжных систем. Очистите кеш.
- Код добавлен не в нужный файл: фильтры нужно добавлять в
functions.phpвашей активной темы или в плагин для кастомных функций.
Практические советы по безопасности и производительности
- Не удаляйте платёжные системы через базу данных — это может повредить настройки. Используйте фильтры и настройки.
- Минимизируйте количество активных платёжных систем, чтобы ускорить загрузку страницы оформления заказа и снизить риск ошибок.
- Регулярно обновляйте WooCommerce и плагины оплаты для безопасности и совместимости.
- Используйте хук с высоким приоритетом (например, 99), чтобы ваш фильтр срабатывал после других.
Сравнительная таблица способов отключения платёжных систем в WooCommerce
| Метод | Преимущества | Недостатки |
|---|---|---|
| Отключение в админке | Просто, не требует кода | Может игнорироваться сторонними плагинами |
Фильтр woocommerce_available_payment_gateways | Гибко, можно задать условия отключения | Требует базовых навыков программирования |
| Удаление/деактивация плагина оплаты | Полное удаление метода | Может повлиять на другие функции, требует доступа к админке |