Как вывести платежные данные WooCommerce в админке WordPress

Проблема: отсутствие детальной информации о платежах в заказах WooCommerce

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

Диагностика: как проверить, какие данные доступны

Для начала нужно убедиться, что платежный шлюз сохраняет нужные данные в метах заказа. Откройте любой заказ в админке, перейдите на вкладку "Заказы" → выберите заказ → внизу страницы проверьте секцию "Пользовательские поля" (custom fields) или используйте следующий сниппет для вывода всех метаданных заказа:

function wppay_show_order_meta_debug(\WC_Order $order) {
    echo '<pre>';
    print_r( $order->get_meta_data() );
    echo '</pre>';
}
add_action( 'woocommerce_admin_order_data_after_order_details', function( $order ) {
    wppay_show_order_meta_debug( $order );
} );

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

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

1. Добавляем метабокс с платежной информацией

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

add_action( 'add_meta_boxes', 'wppay_add_payment_data_metabox' );
function wppay_add_payment_data_metabox() {
    add_meta_box(
        'wppay_payment_data',
        'Данные платежа',
        'wppay_payment_data_metabox_callback',
        'shop_order',
        'side',
        'default'
    );
}

function wppay_payment_data_metabox_callback( $post ) {
    $order = wc_get_order( $post->ID );
    if ( ! $order ) {
        echo 'Заказ не найден';
        return;
    }

    // Пример: выводим ID платежа и статус
    $payment_id = $order->get_meta('_transaction_id'); // ключ может отличаться
    $payment_status = $order->get_meta('_payment_status');

    echo '<strong>ID транзакции:</strong> ' . esc_html( $payment_id ? $payment_id : 'Не указано' ) . '<br>';
    echo '<strong>Статус платежа:</strong> ' . esc_html( $payment_status ? $payment_status : 'Не указан' );
}

2. Определяем ключи метаданных платежа

Каждый платежный шлюз использует свои ключи для сохранения данных. Вот как их найти:

  • В документации платежного плагина
  • Через вызов print_r( $order->get_meta_data() )
  • Просмотр сохранённых пользовательских полей в базе данных (таблица wp_postmeta)

3. Добавляем поддержку нескольких платежных шлюзов

Если на сайте несколько платежных способов, добавьте условную логику по методу оплаты:

function wppay_payment_data_metabox_callback( $post ) {
    $order = wc_get_order( $post->ID );
    if ( ! $order ) {
        echo 'Заказ не найден';
        return;
    }
    $payment_method = $order->get_payment_method();

    switch ( $payment_method ) {
        case 'paypal':
            $transaction_id = $order->get_transaction_id();
            echo '<strong>PayPal ID транзакции:</strong> ' . esc_html( $transaction_id ? $transaction_id : 'Не указано' );
            break;
        case 'stripe':
            $payment_intent = $order->get_meta('_stripe_intent_id');
            echo '<strong>Stripe Payment Intent:</strong> ' . esc_html( $payment_intent ? $payment_intent : 'Не указано' );
            break;
        default:
            echo 'Нет данных для метода оплаты: ' . esc_html( $payment_method );
    }
}

Проверка результата после внедрения

Перейдите в админку WooCommerce → Заказы → откройте любой заказ с соответствующим методом оплаты. В боковой панели (метабоксе "Данные платежа") должны отображаться нужные платежные параметры.

Если данные отсутствуют, проверьте:

  • Корректность ключей метаданных
  • Сохранены ли данные платежным шлюзом
  • Правильность условий вывода (метод оплаты)

Частые ошибки и как их исправить

  • Данные не отображаются: чаще всего из-за неверного ключа метаполя. Используйте отладочный вывод print_r($order->get_meta_data()).
  • Переопределение метабокса конфликтует с другими плагинами: меняйте приоритеты хуков или изменяйте ID метабокса.
  • Проблемы с кодировкой или спецсимволами: всегда используйте esc_html() при выводе.
  • Данные не сохраняются: проверьте, что платежный плагин действительно сохраняет транзакционные данные в заказ.

Практические советы по безопасности и производительности

  • Не выводите в админке полные данные платежных карт или CVV — это нарушение безопасности.
  • Используйте кеширование, если метаданных много и они требуют дополнительного запроса к базе.
  • Обновляйте платежные плагины, чтобы метаданные сохранялись в актуальном формате.

Сравнение способов вывода платежных данных в WooCommerce

СпособПлюсыМинусыРекомендации
Вывод в метабоксе (код)Полный контроль, легко кастомизироватьТребует навыков PHP, нужно поддерживать кодЛучше для разработчиков и кастомных решений
Использовать плагины расширения WooCommerceБыстро, без кодаМожет не поддерживать все данные, ограничен функционалПодходит для типовых задач
Вывод в пользовательских колонках таблицы заказовУдобство обзора, быстроМожет замедлять загрузку списка заказовРекомендуется для ключевых данных
Как оптимизировать базы данных в WordPress для ускорения сайта
21.11.2025
Как отображать платежные данные в админке WordPress
17.02.2026
Как установить лимиты на платежи в WordPress по пользователям
11.04.2026
Как сделать подтверждение платежа в WordPress через вебхуки
23.01.2026
WooCommerce: как реализовать авторизацию платежей через REST API для собственных приложений
29.05.2026