Как создать динамическую таблицу в WordPress с помощью шорткода

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

Зачем нужна динамическая таблица в WordPress

Статические таблицы — это просто HTML-код, вставленный в редактор. При изменении данных приходится каждый раз редактировать страницу, что неудобно и неэффективно. Динамическая таблица позволяет:

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

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

Создаем шорткод для динамической таблицы

Начнем с простого примера, который выводит таблицу из массива данных. Код добавляется в functions.php вашей темы или в отдельный плагин.

function expertreview_dynamic_table_shortcode($atts) {
    $data = [
        ['id' => 1, 'name' => 'Иванов Иван', 'email' => 'ivanov@example.com'],
        ['id' => 2, 'name' => 'Петров Петр', 'email' => 'petrov@example.com'],
        ['id' => 3, 'name' => 'Сидоров Сидор', 'email' => 'sidorov@example.com'],
    ];

    $output = '<table border="1" cellpadding="5" cellspacing="0">';
    $output .= '<thead><tr><th>ID</th><th>Имя</th><th>Email</th></tr></thead>';
    $output .= '<tbody>';
    foreach ($data as $row) {
        $output .= '<tr>';
        $output .= '<td>' . esc_html($row['id']) . '</td>';
        $output .= '<td>' . esc_html($row['name']) . '</td>';
        $output .= '<td>' . esc_html($row['email']) . '</td>';
        $output .= '</tr>';
    }
    $output .= '</tbody></table>';

    return $output;
}
add_shortcode('expertreview_table', 'expertreview_dynamic_table_shortcode');

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

Подключаем сортировку и фильтрацию с помощью JavaScript

Для улучшения удобства пользователя добавим возможность сортировки по столбцам. Самый простой способ — использовать библиотеку Simple-DataTables. Она легкая и не требует jQuery.

Подключим библиотеку и инициализируем таблицу:

function expertreview_enqueue_scripts() {
    wp_enqueue_script('simple-datatables', 'https://cdn.jsdelivr.net/npm/simple-datatables@latest/dist/simple-datatables.js', [], null, true);
}
add_action('wp_enqueue_scripts', 'expertreview_enqueue_scripts');

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

function expertreview_dynamic_table_shortcode($atts) {
    $data = [
        ['id' => 1, 'name' => 'Иванов Иван', 'email' => 'ivanov@example.com'],
        ['id' => 2, 'name' => 'Петров Петр', 'email' => 'petrov@example.com'],
        ['id' => 3, 'name' => 'Сидоров Сидор', 'email' => 'sidorov@example.com'],
    ];

    $table_id = 'expertreview-table-' . rand(1000,9999);

    $output = '<table id="' . $table_id . '" border="1" cellpadding="5" cellspacing="0">';
    $output .= '<thead><tr><th>ID</th><th>Имя</th><th>Email</th></tr></thead>';
    $output .= '<tbody>';
    foreach ($data as $row) {
        $output .= '<tr>';
        $output .= '<td>' . esc_html($row['id']) . '</td>';
        $output .= '<td>' . esc_html($row['name']) . '</td>';
        $output .= '<td>' . esc_html($row['email']) . '</td>';
        $output .= '</tr>';
    }
    $output .= '</tbody></table>';

    $output .= '<script>
        document.addEventListener("DOMContentLoaded", function() {
            new simpleDatatables.DataTable("#' . $table_id . '");
        });
    </script>';

    return $output;
}

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

Загрузка данных из базы WordPress

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

function expertreview_dynamic_table_shortcode($atts) {
    $users = get_users();

    $table_id = 'expertreview-table-' . rand(1000,9999);

    $output = '<table id="' . $table_id . '" border="1" cellpadding="5" cellspacing="0">';
    $output .= '<thead><tr><th>ID</th><th>Имя пользователя</th><th>Email</th><th>Роль</th></tr></thead>';
    $output .= '<tbody>';

    foreach ($users as $user) {
        $roles = implode(', ', $user->roles);
        $output .= '<tr>';
        $output .= '<td>' . esc_html($user->ID) . '</td>';
        $output .= '<td>' . esc_html($user->user_login) . '</td>';
        $output .= '<td>' . esc_html($user->user_email) . '</td>';
        $output .= '<td>' . esc_html($roles) . '</td>';
        $output .= '</tr>';
    }

    $output .= '</tbody></table>';

    $output .= '<script>
        document.addEventListener("DOMContentLoaded", function() {
            new simpleDatatables.DataTable("#' . $table_id . '");
        });
    </script>';

    return $output;
}
add_shortcode('expertreview_table', 'expertreview_dynamic_table_shortcode');

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

Использование плагинов для упрощения задачи

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

  • TablePress — один из самых популярных плагинов для управления таблицами с удобным интерфейсом и поддержкой импорта CSV. Можно расширять функционал с помощью дополнительных аддонов.
  • WPDataTables — платный плагин с поддержкой больших данных, фильтров и редакторов.
  • Data Tables Generator by Supsystic — бесплатный и премиум плагин с визуальным редактором и возможностью интеграции с внешними источниками.

Для интеграции с собственным кодом или специфическими задачами шорткоды с кастомным PHP остаются лучшим решением.

Оптимизация и безопасность

При работе с динамическими таблицами важно:

  • Использовать esc_html() и другие функции экранирования для вывода данных, чтобы избежать XSS-уязвимостей.
  • Кэшировать результаты сложных запросов с помощью Transient API, если данные не меняются слишком часто.
  • Ограничивать доступ к таблицам с конфиденциальной информацией, используя проверки ролей пользователей.

Внедрение таких мер повысит безопасность и производительность сайта.

Заключение

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

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

Как использовать хук WooCommerce 'woocommerce_order_status_changed' для автоматизации задач
11.05.2026
Как создать автоматические резервные копии WordPress с помощью плагинов
01.01.2026
Автоматическое изменение стоимости товаров в WooCommerce при определённых условиях
26.04.2026
Как использовать хуки в WordPress: практическое руководство для начинающих
03.11.2025
Как установить динамические заголовки в WordPress для SEO и удобства пользователей
13.03.2026