Вопрос отображения платежных данных в административной панели 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.