Как отображать платежные данные в админке WordPress

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

Почему важно настраивать отображение платежных данных в админке WordPress

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

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

Кроме того, правильное отображение помогает анализировать поведение пользователей и оптимизировать бизнес-процессы.

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

Для начала создадим в админке отдельный раздел с таблицей платежей. В этом примере предполагается, что у вас есть таблица в базе данных с платежами wp_wppay_payments, содержащая поля id, user_id, amount, status, date.

Добавим меню и страницу в админку с помощью функции wppay_add_admin_menu:

function wppay_add_admin_menu() {
    add_menu_page(
        'Платежи',
        'Платежи',
        'manage_options',
        'wppay-payments',
        'wppay_render_payments_page',
        'dashicons-money-alt',
        6
    );
}
add_action('admin_menu', 'wppay_add_admin_menu');

Далее реализуем функцию вывода таблицы платежей wppay_render_payments_page:

function wppay_render_payments_page() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wppay_payments';
    $payments = $wpdb->get_results("SELECT * FROM $table_name ORDER BY date DESC");
    ?>
    <div class="wrap">
        <h1>История платежей</h1>
        <table class="wp-list-table widefat fixed striped">
            <thead>
                <tr>
                    <th>ID</th>
                    <th>Пользователь</th>
                    <th>Сумма</th>
                    <th>Статус</th>
                    <th>Дата</th>
                </tr>
            </thead>
            <tbody>
                <?php if ($payments) : ?>
                    <?php foreach ($payments as $payment) : ?>
                        <tr>
                            <td><?php echo esc_html($payment->id); ?></td>
                            <td><?php echo esc_html(get_userdata($payment->user_id)->user_login ?? 'Гость'); ?></td>
                            <td><?php echo esc_html(number_format($payment->amount, 2)); ?> ₽</td>
                            <td><?php echo esc_html($payment->status); ?></td>
                            <td><?php echo esc_html(date('d.m.Y H:i', strtotime($payment->date))); ?></td>
                        </tr>
                    <?php endforeach; ?>
                <?php else : ?>
                    <tr><td colspan="5">Платежей пока нет.</td></tr>
                <?php endif; ?>
            </tbody>
        </table>
    </div>
    <?php
}

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

Фильтрация и поиск платежей в таблице

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

function wppay_render_payments_page() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wppay_payments';

    $status_filter = isset($_GET['wppay_status']) ? sanitize_text_field($_GET['wppay_status']) : '';
    $search_user = isset($_GET['wppay_user']) ? sanitize_text_field($_GET['wppay_user']) : '';

    $where = [];
    $params = [];

    if ($status_filter) {
        $where[] = 'status = %s';
        $params[] = $status_filter;
    }

    if ($search_user) {
        $user = get_user_by('login', $search_user);
        if ($user) {
            $where[] = 'user_id = %d';
            $params[] = $user->ID;
        } else {
            // Нет такого пользователя - запрос не вернёт результатов
            $where[] = '1=0';
        }
    }

    $where_sql = '';
    if ($where) {
        $where_sql = 'WHERE ' . implode(' AND ', $where);
    }

    $query = $wpdb->prepare("SELECT * FROM $table_name $where_sql ORDER BY date DESC", ...$params);
    $payments = $wpdb->get_results($query);
    ?>
    <div class="wrap">
        <h1>История платежей</h1>
        <form method="get">
            <input type="hidden" name="page" value="wppay-payments">
            <label>Статус: 
                <select name="wppay_status">
                    <option value="">Все</option>
                    <option value="completed" <?php selected($status_filter, 'completed'); ?>>Завершён</option>
                    <option value="pending" <?php selected($status_filter, 'pending'); ?>>Ожидает</option>
                    <option value="failed" <?php selected($status_filter, 'failed'); ?>>Неудача</option>
                </select>
            </label>
            <label>Пользователь: <input type="text" name="wppay_user" value="<?php echo esc_attr($search_user); ?>" placeholder="Логин пользователя"></label>
            <input type="submit" class="button" value="Фильтровать">
        </form>
        <table class="wp-list-table widefat fixed striped">
            <thead>
                <tr>
                    <th>ID</th>
                    <th>Пользователь</th>
                    <th>Сумма</th>
                    <th>Статус</th>
                    <th>Дата</th>
                </tr>
            </thead>
            <tbody>
                <?php if ($payments) : ?>
                    <?php foreach ($payments as $payment) : ?>
                        <tr>
                            <td><?php echo esc_html($payment->id); ?></td>
                            <td><?php echo esc_html(get_userdata($payment->user_id)->user_login ?? 'Гость'); ?></td>
                            <td><?php echo esc_html(number_format($payment->amount, 2)); ?> ₽</td>
                            <td><?php echo esc_html($payment->status); ?></td>
                            <td><?php echo esc_html(date('d.m.Y H:i', strtotime($payment->date))); ?></td>
                        </tr>
                    <?php endforeach; ?>
                <?php else : ?>
                    <tr><td colspan="5">Платежей не найдено по заданным критериям.</td></tr>
                <?php endif; ?>
            </tbody>
        </table>
    </div>
    <?php
}

Так администратор сможет быстро отфильтровать платежи по статусу и найти платежи пользователя по логину.

Использование плагинов для управления платежами с расширенным функционалом

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

Для сложных платежных систем с подписками и возвратами можно рассмотреть интеграцию с Expert Review — плагином для автоматического анализа платежных данных и отчетности.

Пример подключения шорткода с платежной статистикой в админке

Если нужна сводка платежей в админке — можно добавить шорткод с помощью плагина WPRemark или написать свой:

function wppay_shortcode_payments_summary() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'wppay_payments';
    $total = $wpdb->get_var("SELECT SUM(amount) FROM $table_name WHERE status = 'completed'");
    $count = $wpdb->get_var("SELECT COUNT(*) FROM $table_name WHERE status = 'completed'");
    return "<div><strong>Всего платежей:</strong> " . intval($count) . "<br><strong>Общая сумма:</strong> " . number_format($total, 2) . " ₽</div>";
}
add_shortcode('wppay_payments_summary', 'wppay_shortcode_payments_summary');

Этот шорткод можно вывести и в админке, и на странице отчётов.

Выводы и рекомендации

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

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

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

Как вывести платежные данные WooCommerce в админке WordPress
18.04.2026
Как отображать платежные данные в админке WordPress
17.02.2026
Обновление платежных плагинов в WordPress без потери данных
02.01.2026
WooCommerce: устранение проблемы отсутствия подтверждения платежа при оплате картой
11.05.2026
Как установить и настроить OTP (одноразовый пароль) бесплатно в WordPress
26.01.2026