wpmoney.ru wordpress WP Money

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

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

Почему динамические таблицы важны в WordPress

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

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

Рассмотрим создание такого решения с нуля.

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

Регистрация шорткода в functions.php

Для начала создадим шорткод, который выводит таблицу с данными из массива. Вставьте следующий код в файл functions.php вашей темы или в отдельный плагин:

function wpmoney_render_dynamic_table() {
    $data = [
        ['ID' => 1, 'Название' => 'Товар 1', 'Цена' => '1000 руб.'],
        ['ID' => 2, 'Название' => 'Товар 2', 'Цена' => '1500 руб.'],
        ['ID' => 3, 'Название' => 'Товар 3', 'Цена' => '2000 руб.'],
    ];

    $output = '<table border="1" cellpadding="5" cellspacing="0"><thead><tr>';
    // Заголовки таблицы
    foreach (array_keys($data[0]) as $header) {
        $output .= '<th>' . esc_html($header) . '</th>';
    }
    $output .= '</tr></thead><tbody>';

    // Данные таблицы
    foreach ($data as $row) {
        $output .= '<tr>';
        foreach ($row as $cell) {
            $output .= '<td>' . esc_html($cell) . '</td>';
        }
        $output .= '</tr>';
    }

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

    return $output;
}
add_shortcode('wpmoney_table', 'wpmoney_render_dynamic_table');

Этот шорткод выводит простую таблицу с тремя столбцами: ID, Название и Цена. Чтобы использовать, вставьте в редактор поста или страницы [wpmoney_table].

Обработка данных из базы WordPress

В реальных проектах данные обычно берутся из базы. Пример получения данных из пользовательской таблицы wp_postmeta или кастомного типа записей:

function wpmoney_render_products_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'products'; // предположим, есть таблица с товарами

    $results = $wpdb->get_results("SELECT id, title, price FROM {$table_name} WHERE price > 0", ARRAY_A);

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

    $output = '<table border="1" cellpadding="5" cellspacing="0"><thead><tr>';
    foreach (array_keys($results[0]) as $header) {
        $output .= '<th>' . esc_html($header) . '</th>';
    }
    $output .= '</tr></thead><tbody>';

    foreach ($results as $row) {
        $output .= '<tr>';
        foreach ($row as $cell) {
            $output .= '<td>' . esc_html($cell) . '</td>';
        }
        $output .= '</tr>';
    }

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

    return $output;
}
add_shortcode('wpmoney_products', 'wpmoney_render_products_table');

Такой шорткод [wpmoney_products] выведет таблицу с товарами из базы.

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

Для удобства пользователей следует сделать таблицу интерактивной. Один из простых способов — подключить библиотеку DataTables. Она добавляет сортировку, поиск и пагинацию.

Подключение DataTables в тему

Добавьте в functions.php код для подключения скриптов и стилей:

function wpmoney_enqueue_datatables() {
    wp_enqueue_style('datatables-css', 'https://cdn.datatables.net/1.13.4/css/jquery.dataTables.min.css', [], null);
    wp_enqueue_script('datatables-js', 'https://cdn.datatables.net/1.13.4/js/jquery.dataTables.min.js', ['jquery'], null, true);

    wp_add_inline_script('datatables-js', "
        jQuery(document).ready(function($) {
            $('.wpmoney-data-table').DataTable({
                language: {
                    url: '//cdn.datatables.net/plug-ins/1.13.4/i18n/ru.json'
                }
            });
        });
    ");
}
add_action('wp_enqueue_scripts', 'wpmoney_enqueue_datatables');

Изменяем шорткод для интеграции с DataTables

Отредактируем функцию вывода таблицы, добавив класс:

function wpmoney_render_dynamic_table() {
    $data = [
        ['ID' => 1, 'Название' => 'Товар 1', 'Цена' => '1000 руб.'],
        ['ID' => 2, 'Название' => 'Товар 2', 'Цена' => '1500 руб.'],
        ['ID' => 3, 'Название' => 'Товар 3', 'Цена' => '2000 руб.'],
    ];

    $output = '<table class="wpmoney-data-table" border="1" cellpadding="5" cellspacing="0"><thead><tr>';
    foreach (array_keys($data[0]) as $header) {
        $output .= '<th>' . esc_html($header) . '</th>';
    }
    $output .= '</tr></thead><tbody>';

    foreach ($data as $row) {
        $output .= '<tr>';
        foreach ($row as $cell) {
            $output .= '<td>' . esc_html($cell) . '</td>';
        }
        $output .= '</tr>';
    }

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

    return $output;
}
add_shortcode('wpmoney_table', 'wpmoney_render_dynamic_table');

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

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

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

  • TablePress — один из самых популярных и простых плагинов для управления таблицами. Поддерживает импорт/экспорт, формулы, расширения для сортировки и фильтра.
  • WP Table Builder — визуальный конструктор таблиц с drag-and-drop, подходит для создания таблиц сравнения и каталогов.
  • Data Tables Generator by Supsystic — мощный плагин с поддержкой больших таблиц, фильтров и пагинации.

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

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

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

  • Всегда используйте функции WordPress для экранирования вывода, например esc_html(), чтобы избежать XSS-уязвимостей.
  • Оптимизируйте SQL-запросы, добавляйте индексы в базу, чтобы не нагружать сервер.
  • Рассмотрите кеширование результата шорткода, если данные меняются нечасто.
  • Используйте AJAX для подгрузки больших объёмов данных без перезагрузки страницы.

Например, кеширование можно реализовать так:

function wpmoney_render_dynamic_table_cached() {
    $cache_key = 'wpmoney_dynamic_table_cache';
    $cached = get_transient($cache_key);
    if ($cached !== false) {
        return $cached;
    }

    // Генерация таблицы
    $output = wpmoney_render_dynamic_table();

    set_transient($cache_key, $output, HOUR_IN_SECONDS);
    return $output;
}
add_shortcode('wpmoney_table_cached', 'wpmoney_render_dynamic_table_cached');

Заключение

Создание динамических таблиц в WordPress — задача, которая решается достаточно просто с использованием шорткодов и немного PHP. Для улучшения пользовательского опыта рекомендуем добавить сортировку и пагинацию через JavaScript-библиотеки. Если не хочется писать код — используйте проверенные плагины. И не забывайте о безопасности и оптимизации.

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

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше