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

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

Зачем нужно автоматическое обновление элементов в Elementor

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

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

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

Подготовка: создание кастомного виджета Elementor с AJAX

Первый шаг — создать свой виджет Elementor, который будет выводить блок с данными, обновляемыми через AJAX. Для примера создадим простой счетчик с кнопкой обновления.

Пример класса виджета с AJAX-поддержкой (сокращённо):

class Wpelementor_Ajax_Counter_Widget extends \Elementor\Widget_Base {
    public function get_name() {
        return 'wpelementor_ajax_counter';
    }
    public function get_title() {
        return 'AJAX Счетчик';
    }
    public function get_icon() {
        return 'eicon-counter';
    }
    public function get_categories() {
        return ['basic'];
    }
    public function render() {
        ?>
        <div id="wpelementor-counter">Значение: <span id="counter-value"><?php echo esc_html(get_option('wpelementor_counter_value', 0)); ?></span></div>
        <button id="wpelementor-counter-refresh">Обновить</button>
        <?php
    }
}

Далее нужно зарегистрировать этот виджет в Elementor и подключить скрипт для AJAX.

Подключение AJAX-скрипта и обработчика в WordPress

Для работы AJAX создадим JavaScript-файл, который отправляет запрос и обновляет элемент на странице без перезагрузки.

Пример скрипта wpelementor-ajax.js:

jQuery(document).ready(function($) {
    $('#wpelementor-counter-refresh').on('click', function() {
        $.ajax({
            url: wpelementor_ajax_object.ajax_url,
            type: 'POST',
            data: {
                action: 'wpelementor_update_counter'
            },
            success: function(response) {
                if(response.success) {
                    $('#counter-value').text(response.data.new_value);
                } else {
                    alert('Ошибка обновления');
                }
            }
        });
    });
});

Теперь добавим в functions.php или плагин регистрацию скрипта и обработчик AJAX:

function wpelementor_enqueue_scripts() {
    wp_enqueue_script('wpelementor-ajax', plugin_dir_url(__FILE__) . 'wpelementor-ajax.js', ['jquery'], '1.0', true);
    wp_localize_script('wpelementor-ajax', 'wpelementor_ajax_object', [
        'ajax_url' => admin_url('admin-ajax.php'),
    ]);
}
add_action('wp_enqueue_scripts', 'wpelementor_enqueue_scripts');

function wpelementor_ajax_update_counter() {
    $current = (int) get_option('wpelementor_counter_value', 0);
    $new_value = $current + 1;
    update_option('wpelementor_counter_value', $new_value);
    wp_send_json_success(['new_value' => $new_value]);
}
add_action('wp_ajax_wpelementor_update_counter', 'wpelementor_ajax_update_counter');
add_action('wp_ajax_nopriv_wpelementor_update_counter', 'wpelementor_ajax_update_counter');

Так мы реализовали простой счетчик с кнопкой обновления, который работает через AJAX и интегрируется с Elementor.

Расширение: автоматическое обновление элементов без кнопки

Часто требуется обновлять данные не по нажатию кнопки, а автоматически, например, каждые 30 секунд. Для этого достаточно изменить JS-код:

jQuery(document).ready(function($) {
    function wpelementor_update_counter() {
        $.ajax({
            url: wpelementor_ajax_object.ajax_url,
            type: 'POST',
            data: { action: 'wpelementor_update_counter' },
            success: function(response) {
                if(response.success) {
                    $('#counter-value').text(response.data.new_value);
                }
            }
        });
    }
    setInterval(wpelementor_update_counter, 30000); // обновлять каждые 30 секунд
});

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

Примеры полезных применений AJAX в Elementor

Помимо счетчиков, такой подход отлично подходит для:

  • Динамической подгрузки отзывов или комментариев без перезагрузки страницы.
  • Обновления корзины WooCommerce в виджете Elementor без перезагрузки.
  • Показ актуальной информации из внешних API с периодическим обновлением.
  • Реализации интерактивных форм с проверкой данных на сервере.

При необходимости можно расширять функциональность AJAX-запросов, добавлять обработку ошибок, анимации загрузки и многое другое.

Интеграция с плагинами WPShop

Если вы используете плагин WPRemark, динамическая подгрузка отзывов с AJAX может быть реализована по аналогичной схеме, где AJAX-запросы обновляют блок отзывов без перезагрузки.

Также плагин ABC Pagination позволяет реализовать AJAX-пагинацию для динамических списков в Elementor, что улучшает UX и снижает нагрузку на сервер.

Советы по безопасности и оптимизации

При работе с AJAX обязательно используйте nonce-проверки для защиты от CSRF-атак, особенно если данные отправляются методом POST и изменяют состояние сайта.

Пример добавления nonce:

wp_localize_script('wpelementor-ajax', 'wpelementor_ajax_object', [
    'ajax_url' => admin_url('admin-ajax.php'),
    'nonce' => wp_create_nonce('wpelementor_nonce')
]);

И проверка в обработчике:

if(!isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], 'wpelementor_nonce')) {
    wp_send_json_error('Неверный nonce');
    wp_die();
}

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

WooCommerce: как использовать хуки для дополнительной функциональности оформления заказа
29.05.2026
Как сделать автозаполнение форм в Elementor с помощью AJAX
26.01.2026
Как создать автоматические резервные копии WordPress с плагинами и кастомным кодом
23.11.2025
Как использовать Elementor для отладки и решения технических проблем в WordPress
13.04.2026
WooCommerce: автоматическое отслеживание и отключение товаров по наличию в Elementor
02.06.2026