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

|

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

Почему стоит использовать AJAX для динамических таблиц в WordPress

AJAX (Asynchronous JavaScript and XML) позволяет обновлять части страницы без полной перезагрузки, что значительно улучшает пользовательский опыт. Для таблиц с большим количеством данных это особенно важно, так как:

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

Шаг 1. Регистрация AJAX обработчиков в WordPress

Первым делом нужно зарегистрировать функции, которые будут обрабатывать AJAX-запросы. В WordPress это делается с помощью хуков wp_ajax_{action} и wp_ajax_nopriv_{action} (для неавторизованных пользователей).

Пример регистрации в functions.php вашей темы или в отдельном плагине:

add_action('wp_ajax_yelly_get_table_data', 'yelly_get_table_data_callback');
add_action('wp_ajax_nopriv_yelly_get_table_data', 'yelly_get_table_data_callback');

function yelly_get_table_data_callback() {
    // Проверка nonce для безопасности
    check_ajax_referer('yelly_table_nonce', 'security');

    global $wpdb;
    $table_name = $wpdb->prefix . 'your_custom_table'; // Пример таблицы в БД

    $search = isset($_POST['search']) ? sanitize_text_field($_POST['search']) : '';

    $query = "SELECT * FROM $table_name";
    if ($search) {
        $query .= $wpdb->prepare(" WHERE column_name LIKE %s", '%' . $wpdb->esc_like($search) . '%');
    }

    $results = $wpdb->get_results($query, ARRAY_A);

    wp_send_json_success($results);
}

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

Шаг 2. Подключение JavaScript для AJAX-запросов

Теперь нужно добавить скрипт, который будет отправлять AJAX-запросы и обновлять таблицу на странице.

Пример подключения в functions.php:

function yelly_enqueue_scripts() {
    wp_enqueue_script('yelly-table-script', get_template_directory_uri() . '/js/yelly-table.js', ['jquery'], null, true);
    wp_localize_script('yelly-table-script', 'yelly_ajax_object', [
        'ajax_url' => admin_url('admin-ajax.php'),
        'nonce' => wp_create_nonce('yelly_table_nonce')
    ]);
}
add_action('wp_enqueue_scripts', 'yelly_enqueue_scripts');

Далее создадим файл yelly-table.js в папке js вашей темы:

jQuery(document).ready(function($) {
    function yelly_load_table(search = '') {
        $.ajax({
            url: yelly_ajax_object.ajax_url,
            type: 'POST',
            dataType: 'json',
            data: {
                action: 'yelly_get_table_data',
                security: yelly_ajax_object.nonce,
                search: search
            },
            success: function(response) {
                if (response.success) {
                    let rows = '';
                    $.each(response.data, function(index, item) {
                        rows += `<tr>`;
                        $.each(item, function(key, value) {
                            rows += `<td>${value}</td>`;
                        });
                        rows += `</tr>`;
                    });
                    $('#yelly-table-body').html(rows);
                } else {
                    $('#yelly-table-body').html('<tr><td colspan="100%">Данные не найдены</td></tr>');
                }
            },
            error: function() {
                $('#yelly-table-body').html('<tr><td colspan="100%">Ошибка загрузки данных</td></tr>');
            }
        });
    }

    // Загрузка таблицы при загрузке страницы
    yelly_load_table();

    // Поиск по таблице
    $('#yelly-search').on('input', function() {
        const query = $(this).val();
        yelly_load_table(query);
    });
});

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

Шаг 3. Разметка HTML для вывода таблицы и поиска

Добавьте на страницу или в шаблон следующий HTML-код:

<input type="text" id="yelly-search" placeholder="Поиск по таблице..." style="margin-bottom: 15px; padding: 8px; width: 100%; max-width: 400px;"/>
<table id="yelly-table" border="1" cellpadding="5" cellspacing="0" style="width: 100%; border-collapse: collapse;">
    <thead>
        <tr>
            <th>Колонка 1</th>
            <th>Колонка 2</th>
            <th>Колонка 3</th>
            <!-- Добавьте нужные колонки -->
        </tr>
    </thead>
    <tbody id="yelly-table-body">
        <tr><td colspan="3">Загрузка данных...</td></tr>
    </tbody>
</table>

Эта разметка создаст поле для поиска и таблицу, которая будет динамически заполняться данными.

Шаг 4. Оптимизация и расширение функционала

Чтобы улучшить таблицу, можно добавить:

Пример добавления параметров сортировки в AJAX-запрос:

// В JavaScript добавляем параметры сортировки
let orderby = 'column_name';
let order = 'ASC';

// В AJAX data добавляем orderby и order
// В PHP обработчике используем их для построения запроса
$query .= $wpdb->prepare(" ORDER BY %s %s", $orderby, $order);

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

Заключение по созданию динамической таблицы с AJAX

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

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

Как создать собственный виджет в WordPress: практические примеры и советы
23.11.2025
Как создать автоматическое меню в WordPress с применением AJAX
03.04.2026
Как удалить неиспользуемые вариации товаров в WooCommerce: практическое руководство
03.05.2026
Как создать автоматический каталог карт в WordPress с использованием Yelly
12.04.2026
Как создать отзывы с экспертной оценкой в WordPress: практические примеры и плагины
27.01.2026
×
День SEO
Время сделать подарок своему WordPress!
-20% на премиум

шаблоны и плагины

Порадуй свой сайт ⋙