Собственный платежный шлюз не отображается на странице checkout, почему?
Всем привет, может кто знает?
Делаю платежный шлюз по этому мануалу Мишки
Т.е. все ок, в настройках платежей появляется новый вид оплаты, но, на странице checkout он почему-то не появляется...
Уже замучался...
WP чистый, последней версии.
Тема стандартная, от wordpress.
WOO чистый, последней версии.
Доп. плагинов нет.
Может этот мануал уже устарел, и не будет работать с новыми версиями? Тогда если кто знает, что поменялось?
Дополнительно:
в новой версии WP/woocomemrce чекаут сделан на блоках. если зайти на страницы в админке и открыть чекаут, то станет понятно. нужно удалить оттуда все и вставить шорткод [woocommerce_checkout] и тогда все заработает
- Благодарю :)
Эх, моя невнимательность...(
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

Если платёжный шлюз появился в настройках WooCommerce, но не отображается на странице checkout, первая проверка — какой checkout используется. В новых WooCommerce страница оформления заказа может быть собрана блоком Checkout, а многие кастомные шлюзы, написанные по старым мануалам, работают только с классическим shortcode checkout.
Откройте страницу “Оформление заказа” в админке. Если там стоит блок WooCommerce Checkout, временно удалите его и вставьте shortcode:
[woocommerce_checkout]
После этого проверьте, появился ли Ваш метод оплаты. Если появился — проблема не в классе шлюза, а в несовместимости с WooCommerce Blocks. Для поддержки block checkout нужен отдельный JS/Blocks integration, и старые статьи по
WC_Payment_Gatewayэтого не покрывают.Также проверьте базовые условия, при которых WooCommerce скрывает метод оплаты:
is_available().В классе шлюза должен быть корректный id и enabled:
class WC_Gateway_Custom extends WC_Payment_Gateway { public function __construct() { $this->id = 'custom_gateway'; $this->method_title = 'Custom Gateway'; $this->has_fields = false; $this->init_form_fields(); $this->init_settings(); $this->enabled = $this->get_option('enabled'); $this->title = $this->get_option('title'); } }
И он должен добавляться в список gateways:
add_filter('woocommerce_payment_gateways', function ($gateways) { $gateways[] = 'WC_Gateway_Custom'; return $gateways; });
Итог: если на чистом WP/Woo метод виден в настройках, но не на checkout, почти наверняка это либо WooCommerce Blocks, либо условия доступности шлюза. Для быстрого решения используйте классический shortcode checkout. Для правильной современной реализации добавляйте поддержку WooCommerce Blocks отдельно.