Как создать бесплатный плагин для WordPress с поддержкой AJAX

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

Что такое AJAX и зачем он нужен в плагинах WordPress

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

Использование AJAX в плагинах даёт пользователю более плавный и быстрый интерфейс, улучшая UX. Для разработчика это значит меньше нагрузки на сервер и более гибкое взаимодействие с данными.

Как работает AJAX в WordPress

WordPress имеет собственную систему обработки AJAX-запросов через файл admin-ajax.php. Запросы могут обрабатываться как для авторизованных пользователей, так и для гостей. Для этого в плагине нужно зарегистрировать соответствующие обработчики и подключить JavaScript, который будет отправлять AJAX-запросы.

Структура плагина wpbook-ajax-example

Для примера создадим плагин с названием wpbook-ajax-example, который будет выводить кнопку и при нажатии загружать список последних постов без перезагрузки страницы.

Структура файлов плагина:

  • wpbook-ajax-example.php — основной файл плагина
  • js/ajax-script.js — JavaScript для AJAX-запросов

Создаём основной файл плагина

В файле wpbook-ajax-example.php регистрируем плагин, подключаем скрипты и определяем функцию-обработчик AJAX.

<?php
/*
Plugin Name: WPBook AJAX Example
Description: Пример плагина с поддержкой AJAX для WordPress
Version: 1.0
Author: WPBook
*/

// Подключаем JavaScript
function wpbook_enqueue_ajax_script() {
    wp_enqueue_script('wpbook-ajax-script', plugin_dir_url(__FILE__) . 'js/ajax-script.js', array('jquery'), null, true);
    wp_localize_script('wpbook-ajax-script', 'wpbook_ajax_obj', array(
        'ajax_url' => admin_url('admin-ajax.php'),
        'nonce' => wp_create_nonce('wpbook_ajax_nonce')
    ));
}
add_action('wp_enqueue_scripts', 'wpbook_enqueue_ajax_script');

// Обработчик AJAX для авторизованных пользователей
function wpbook_load_latest_posts() {
    check_ajax_referer('wpbook_ajax_nonce', 'nonce');

    $args = array(
        'numberposts' => 5,
        'post_status' => 'publish'
    );
    $latest_posts = wp_get_recent_posts($args);

    if(empty($latest_posts)) {
        wp_send_json_error('Посты не найдены');
    }

    $response = '';
    foreach($latest_posts as $post) {
        $response .= '<li><a href="' . get_permalink($post['ID']) . '">' . esc_html($post['post_title']) . '</a></li>';
    }

    wp_send_json_success('<ul>' . $response . '</ul>');
}
add_action('wp_ajax_wpbook_load_latest_posts', 'wpbook_load_latest_posts');
add_action('wp_ajax_nopriv_wpbook_load_latest_posts', 'wpbook_load_latest_posts');

// Шорткод для вывода кнопки
function wpbook_ajax_button_shortcode() {
    return '<button id="wpbook-ajax-button">Загрузить последние посты</button><div id="wpbook-ajax-result"></div>';
}
add_shortcode('wpbook_ajax_button', 'wpbook_ajax_button_shortcode');
?>

JavaScript для AJAX-запроса

Создаём файл js/ajax-script.js с кодом для отправки AJAX-запроса и обработки ответа:

jQuery(document).ready(function($) {
    $('#wpbook-ajax-button').on('click', function() {
        var data = {
            action: 'wpbook_load_latest_posts',
            nonce: wpbook_ajax_obj.nonce
        };

        $.post(wpbook_ajax_obj.ajax_url, data, function(response) {
            if(response.success) {
                $('#wpbook-ajax-result').html(response.data);
            } else {
                $('#wpbook-ajax-result').html('<p>Ошибка загрузки постов</p>');
            }
        });
    });
});

Как использовать плагин на сайте

После активации плагина достаточно вставить шорткод [wpbook_ajax_button] в любую запись или страницу. На фронтенде появится кнопка «Загрузить последние посты». При клике будет выполнен AJAX-запрос, и под кнопкой появится список последних пяти опубликованных записей.

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

Расширение функционала и рекомендации

1. Безопасность. Всегда используйте wp_create_nonce и check_ajax_referer для защиты AJAX-запросов от CSRF-атак.

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

3. Совместимость. Используйте стандартные хуки WordPress и избегайте конфликтов с другими плагинами и темами.

4. Локализация. Для многоязычных сайтов предусмотрите перевод текста, используйте функции __() и _e().

Заключение

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

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как использовать хуки для автоматического изменения стоимости товара в WooCommerce
09.05.2026
Как создать автоматический импорт данных из Google Sheets в WordPress
19.03.2026
Как создать автоматический импорт продуктов из CSV в WooCommerce
19.01.2026
Автоматическое отключение неиспользуемых плагинов в WordPress: практическое решение
02.03.2026
Как сделать автоматический rollback обновлений WordPress при ошибках
15.03.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее