Как создать собственный платежный шорткод в WordPress

В современном мире электронной коммерции удобство и кастомизация платежных форм играют ключевую роль. Если стандартных возможностей вашего платежного плагина не хватает, можно создать собственный платежный шорткод, который будет внедряться в ваши страницы и записи WordPress. В этой статье мы подробно разберем, как это сделать, используя PHP и популярные плагины, а также приведем практические примеры кода.

Почему стоит создавать собственный платежный шорткод?

Стандартные плагины для приема платежей часто ограничены готовыми шаблонами и функционалом, который не всегда идеально подходит под конкретные задачи сайта. Создание собственного шорткода позволяет:

  • Гибко настраивать внешний вид и логику платежной формы.
  • Интегрировать дополнительные поля, например, для сбора данных о покупателе.
  • Добавлять кастомную валидацию и обработку платежей.
  • Легко вставлять платежную форму в любую часть сайта без правки кода шаблона.

Таким образом, вы получаете полный контроль над процессом приема платежей, улучшая пользовательский опыт и повышая конверсию.

Предварительная подготовка: выбор плагина для платежей

Для реализации собственного платежного шорткода нам понадобится плагин, который предоставляет API или хотя бы возможность программного взаимодействия с платежным шлюзом. Рассмотрим два популярных варианта:

WooCommerce + WooCommerce Payments

Если ваш сайт использует WooCommerce, то плагин WooCommerce Payments идеально подходит для расширения функционала. Он поддерживает множество платежных систем и имеет удобный API.

Easy Digital Downloads (EDD)

Для сайтов, продающих цифровые товары, EDD — отличный выбор. Он также поддерживает расширения для платежных шлюзов и позволяет создать кастомные формы оплаты.

Создаем собственный платежный шорткод: пример кода

Рассмотрим минимальный пример создания шорткода, который выводит форму с суммой и кнопкой оплаты, а после нажатия вызывает обработчик платежа. Для примера возьмем WooCommerce.

function wppay_create_payment_shortcode($atts) {
    $atts = shortcode_atts(array(
        'amount' => '100',
        'currency' => 'RUB'
    ), $atts, 'wppay_payment');

    ob_start();
    ?>
    <form id="wppay-payment-form" method="post">
        <label>Сумма: <input type="text" name="wppay_amount" value="<?php echo esc_attr($atts['amount']); ?>" readonly></label><br>
        <input type="hidden" name="wppay_currency" value="<?php echo esc_attr($atts['currency']); ?>">
        <input type="submit" name="wppay_submit" value="Оплатить">
    </form>
    <?php
    return ob_get_clean();
}
add_shortcode('wppay_payment', 'wppay_create_payment_shortcode');

Этот шорткод [wppay_payment amount="500" currency="RUB"] выведет форму с кнопкой оплаты указанной суммы. Следующий шаг — обработка данных формы.

Обработка платежа на сервере

Для обработки платежа создадим функцию, которая отследит отправку формы, проверит данные и вызовет API WooCommerce для создания заказа и оплаты.

function wppay_handle_payment() {
    if (isset($_POST['wppay_submit'])) {
        $amount = floatval($_POST['wppay_amount']);
        $currency = sanitize_text_field($_POST['wppay_currency']);

        // Создаем заказ WooCommerce
        $order = wc_create_order();
        $order->add_product(wc_get_product(123), 1); // Добавьте товар с ID 123 или создайте виртуальный продукт
        $order->set_currency($currency);
        $order->set_total($amount);
        $order->calculate_totals();
        $order->save();

        // Здесь должна быть логика вызова платежного шлюза
        // Для примера просто редиректим на страницу оплаты заказа
        wp_redirect($order->get_checkout_payment_url());
        exit;
    }
}
add_action('init', 'wppay_handle_payment');

В этом коде мы обрабатываем POST-запрос, создаем заказ и перенаправляем пользователя на стандартную страницу оплаты WooCommerce. В реальном проекте нужно добавить дополнительные проверки, обработку ошибок и интеграцию с выбранным платежным шлюзом.

Расширение функционала: добавляем дополнительные поля

Для более сложных задач можно добавить поля ввода, например, email или комментарий, и передать эти данные в заказ.

function wppay_create_payment_shortcode($atts) {
    $atts = shortcode_atts(array(
        'amount' => '100',
        'currency' => 'RUB'
    ), $atts, 'wppay_payment');

    ob_start();
    ?>
    <form id="wppay-payment-form" method="post">
        <label>Email: <input type="email" name="wppay_email" required></label><br>
        <label>Комментарий: <input type="text" name="wppay_comment"></label><br>
        <label>Сумма: <input type="text" name="wppay_amount" value="<?php echo esc_attr($atts['amount']); ?>" readonly></label><br>
        <input type="hidden" name="wppay_currency" value="<?php echo esc_attr($atts['currency']); ?>">
        <input type="submit" name="wppay_submit" value="Оплатить">
    </form>
    <?php
    return ob_get_clean();
}

function wppay_handle_payment() {
    if (isset($_POST['wppay_submit'])) {
        $amount = floatval($_POST['wppay_amount']);
        $currency = sanitize_text_field($_POST['wppay_currency']);
        $email = sanitize_email($_POST['wppay_email']);
        $comment = sanitize_text_field($_POST['wppay_comment']);

        $order = wc_create_order();
        $order->add_product(wc_get_product(123), 1);
        $order->set_currency($currency);
        $order->set_total($amount);
        $order->set_customer_note($comment);
        $order->set_billing_email($email);
        $order->calculate_totals();
        $order->save();

        wp_redirect($order->get_checkout_payment_url());
        exit;
    }
}
add_action('init', 'wppay_handle_payment');

Такой подход позволяет собрать нужные данные перед оплатой и хранить их в заказе, что полезно для последующей работы с клиентом.

Популярные плагины для расширенной интеграции платежей

Если вы не хотите писать весь код самостоятельно, рекомендуем обратить внимание на эти плагины, которые легко интегрируются с кастомными шорткодами или могут быть расширены:

  • WP Simple Pay — удобный плагин для приема платежей через Stripe с поддержкой шорткодов и кастомных полей.
  • Gravity Forms + Stripe Add-On — мощное решение для создания форм с оплатой, можно создавать любые поля и логику.
  • GiveWP — популярный плагин для сбора пожертвований с множеством платежных шлюзов и возможностью создания кастомных платежных форм.

Подводим итоги

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

Не забывайте тщательно тестировать платежные формы в разных условиях и обеспечивать безопасность обработки данных, чтобы избежать ошибок и защитить клиентов.

WooCommerce: как разрешить оплату в разных валютах с проверкой и настройкой
21.04.2026
Как сделать автоматическую проверку платежей в WordPress через CRON
11.04.2026
Как избежать проблем с дублированием платежей в WordPress
19.01.2026
Использование OTP (одноразового пароля) для подтверждения платежей в WordPress
15.04.2026
Как создать автоплатёж в WordPress для увеличения конверсии
15.12.2025