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

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

Почему динамическая таблица лучше статической

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

Динамическая таблица позволяет:

  • Автоматически обновлять контент без ручного редактирования;
  • Интегрироваться с базой данных или внешними API;
  • Использовать фильтры и сортировку;
  • Выводить данные в удобном и наглядном виде.

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

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

Для начала создадим функцию, которая будет генерировать HTML таблицу из массива данных. Эта функция будет привязана к шорткоду [wpdevelop_table].

function wpdevelop_generate_dynamic_table($atts) {
    // Атрибуты шорткода с дефолтными значениями
    $atts = shortcode_atts(array(
        'rows' => 5,
        'cols' => 3
    ), $atts, 'wpdevelop_table');

    $rows = intval($atts['rows']);
    $cols = intval($atts['cols']);

    // Генерируем массив данных для примера
    $data = array();
    for ($i = 1; $i <= $rows; $i++) {
        $row = array();
        for ($j = 1; $j <= $cols; $j++) {
            $row[] = "Ячейка {$i}-{$j}";
        }
        $data[] = $row;
    }

    // Формируем HTML таблицу
    $html = '<table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse; width: 100%;">';
    // Заголовок таблицы
    $html .= '<thead><tr>';
    for ($h = 1; $h <= $cols; $h++) {
        $html .= "<th>Заголовок {$h}</th>";
    }
    $html .= '</tr></thead>';

    // Тело таблицы
    $html .= '<tbody>';
    foreach ($data as $row) {
        $html .= '<tr>';
        foreach ($row as $cell) {
            $html .= "<td>{$cell}</td>";
        }
        $html .= '</tr>';
    }
    $html .= '</tbody></table>';

    return $html;
}
add_shortcode('wpdevelop_table', 'wpdevelop_generate_dynamic_table');

Вставив этот код в файл functions.php активной темы или в свой плагин, вы сможете использовать шорткод [wpdevelop_table rows="4" cols="3"] для вывода таблицы с 4 строками и 3 столбцами.

Настройка и расширение функционала таблицы

Данный пример можно расширить, чтобы подгружать данные из базы данных WordPress, например, из произвольных таблиц или метаполей.

Пример выборки данных из кастомной таблицы базы данных:

function wpdevelop_generate_table_from_db() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'my_custom_data';

    $results = $wpdb->get_results("SELECT col1, col2, col3 FROM {$table_name} LIMIT 10", ARRAY_A);

    if (empty($results)) {
        return '<p>Данные не найдены</p>';
    }

    $html = '<table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse; width: 100%;">';
    $html .= '<thead><tr><th>Колонка 1</th><th>Колонка 2</th><th>Колонка 3</th></tr></thead>';
    $html .= '<tbody>';
    foreach ($results as $row) {
        $html .= '<tr>';
        $html .= '<td>' . esc_html($row['col1']) . '</td>';
        $html .= '<td>' . esc_html($row['col2']) . '</td>';
        $html .= '<td>' . esc_html($row['col3']) . '</td>';
        $html .= '</tr>';
    }
    $html .= '</tbody></table>';

    return $html;
}
add_shortcode('wpdevelop_table_db', 'wpdevelop_generate_table_from_db');

Такой шорткод [wpdevelop_table_db] выведет данные из таблицы wp_my_custom_data, которую нужно предварительно создать и наполнить.

Использование плагинов для динамических таблиц

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

  • ABC Pagination — поможет организовать разбивку таблицы на страницы и удобную навигацию;
  • WPRemark — если таблица содержит отзывы или пользовательские данные с возможностью комментирования;
  • Плагин TablePress — один из самых популярных для удобного управления таблицами в админке.

Интеграция с TablePress позволяет экспортировать и импортировать таблицы, использовать фильтры и сортировку без дополнительных усилий.

Добавление сортировки и фильтрации с помощью JavaScript

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

Пример подключения DataTables к таблице:

function wpdevelop_enqueue_datatables() {
    wp_enqueue_script('jquery');
    wp_enqueue_script('datatables-js', 'https://cdn.datatables.net/1.13.4/js/jquery.dataTables.min.js', array('jquery'), '1.13.4', true);
    wp_enqueue_style('datatables-css', 'https://cdn.datatables.net/1.13.4/css/jquery.dataTables.min.css');
}
add_action('wp_enqueue_scripts', 'wpdevelop_enqueue_datatables');

function wpdevelop_add_datatables_script() {
    if (is_singular() && has_shortcode(get_post()->post_content, 'wpdevelop_table')) {
        ?>
        <script type="text/javascript">
        jQuery(document).ready(function($) {
            $('table').DataTable();
        });
        </script>
        <?php
    }
}
add_action('wp_footer', 'wpdevelop_add_datatables_script');

Этот код подключит скрипты DataTables и активирует их для таблиц, выведенных через шорткод. В результате таблица получит удобную сортировку по клику на заголовки и поле поиска.

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

Обязательно проверяйте безопасность вывода данных, особенно если таблица подгружает контент из пользовательских источников или базы данных, используйте функции esc_html(), esc_attr().

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

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

Итоговые рекомендации

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

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

Удаление CSS и JS из отдельных страниц WordPress для ускорения загрузки
10.02.2026
Как использовать хук pre_get_posts для фильтрации записей в WordPress
20.04.2026
Как создать автоматический импорт постов из RSS в WordPress
18.01.2026
Как удалить метаданные из изображений в WordPress без плагинов
09.12.2025
Как создать настройку автоматической отправки email из WPForms в WordPress
25.01.2026