Как создать собственный плагин для оптимизации кеша в WordPress

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

Почему стоит создавать собственный плагин кеширования преимущества кастомизации и контроля

Готовые плагины кэширования, такие как W3 Total Cache или WP Super Cache, отлично справляются с задачей, но они могут быть избыточными или содержать функции, которые вы не используете. Создание собственного плагина позволяет:

  • Контролировать процесс кеширования на уровне кода;
  • Оптимизировать работу именно под архитектуру вашего сайта;
  • Избегать конфликтов с другими плагинами;
  • Добавлять только необходимые функции без лишних зависимостей;
  • Изучить внутренние механизмы WordPress и PHP, что полезно для дальнейшего развития навыков.

Далее мы рассмотрим, как можно реализовать базовый кеш с возможностью очистки и автоматического обновления.

Как работает кеширование в WordPress основы и точки интеграции

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

Основная идея — сохранить сгенерированный HTML в файл или в память, чтобы при повторном запросе не выполнять тяжелые операции заново. Для этого мы используем хуки WordPress:

  • template_redirect — для перехвата запроса и вывода кеша;
  • shutdown — для сохранения кеша после генерации страницы;
  • admin_post_ и admin_post_nopriv_ — для очистки кеша по запросу.

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

  • save_post;
  • edit_post;
  • deleted_post.

Создаем структуру плагина файлы, директории, базовая организация

Начнем с создания папки wpsupercache-custom в директории /wp-content/plugins/. В ней создадим главный файл wpsupercache-custom.php с базовым описанием плагина:

<?php
/**
 * Plugin Name: WP Super Cache Custom
 * Description: Собственный плагин для оптимизации кеша страниц WordPress
 * Version: 1.0
 * Author: WPSuperCache.ru
 */

// Безопасность
if (!defined('ABSPATH')) {
    exit;
}

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

Основные функции плагина запись, чтение и очистка кеша

Для работы с кешем создадим несколько функций с префиксом wpsupercache_custom_ для удобства и предотвращения конфликтов.

Функция записи кеша

function wpsupercache_custom_write_cache($cache_key, $content) {
    $cache_dir = plugin_dir_path(__FILE__) . 'cache/';
    if (!is_dir($cache_dir)) {
        mkdir($cache_dir, 0755, true);
    }
    $cache_file = $cache_dir . md5($cache_key) . '.html';
    file_put_contents($cache_file, $content);
}

Эта функция сохраняет сгенерированный HTML в файл с именем по хешу ключа кеша.

Функция чтения кеша

function wpsupercache_custom_read_cache($cache_key) {
    $cache_file = plugin_dir_path(__FILE__) . 'cache/' . md5($cache_key) . '.html';
    if (file_exists($cache_file)) {
        return file_get_contents($cache_file);
    }
    return false;
}

Если кеш есть — возвращаем содержимое, иначе false.

Функция очистки кеша

function wpsupercache_custom_clear_cache() {
    $cache_dir = plugin_dir_path(__FILE__) . 'cache/';
    if (is_dir($cache_dir)) {
        $files = glob($cache_dir . '*.html');
        foreach ($files as $file) {
            unlink($file);
        }
    }
}

Удаляет все кешированные файлы, что удобно при обновлении контента.

Интеграция с WordPress перехват запросов и вывод кеша

Теперь свяжем функции с хуками WordPress, чтобы кешировать вывод страниц и управлять кешем.

Перехват и вывод кеша

add_action('template_redirect', 'wpsupercache_custom_maybe_serve_cache');

function wpsupercache_custom_maybe_serve_cache() {
    if (is_user_logged_in() || is_admin()) {
        return; // Не кешируем для админов и авторизованных
    }
    $cache_key = 'page_' . $_SERVER['REQUEST_URI'];
    $cache_content = wpsupercache_custom_read_cache($cache_key);
    if ($cache_content !== false) {
        echo $cache_content;
        exit();
    }
    ob_start();
    add_action('shutdown', function() use ($cache_key) {
        $content = ob_get_contents();
        wpsupercache_custom_write_cache($cache_key, $content);
        ob_end_flush();
    });
}

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

Очистка кеша при обновлении контента

add_action('save_post', 'wpsupercache_custom_clear_cache');
add_action('deleted_post', 'wpsupercache_custom_clear_cache');
add_action('edit_post', 'wpsupercache_custom_clear_cache');

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

Расширение плагина планы и идеи для улучшения

Получив базовый плагин, вы можете расширить его функционал:

  • Добавить интерфейс в админке для управления кешем и настройки времени жизни кеша;
  • Реализовать кеширование AJAX-запросов;
  • Добавить поддержку мультисайтов;
  • Интегрировать с CDN для автоматической очистки кеша;
  • Добавить логирование и мониторинг кеша.

Создание собственного плагина — отличная возможность глубже понять работу WordPress и получить максимальную производительность, адаптированную именно под ваш проект.

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

⭐⭐⭐⭐⭐
Кэширование страниц с разными cookie в WordPress: практическое руководство
11.03.2026
Кэширование ответов форм в WordPress с WP Super Cache: практические советы и примеры
22.12.2025
Кэширование выставок в WordPress: практические решения для оптимизации производительности
13.04.2026
Как оптимизировать работу WordPress с помощью кэширующих плагинов
03.11.2025
WP Super Cache и PHP-FPM: оптимальная настройка для быстрого WordPress
14.03.2026
×

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

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

пишет статьи

готовит SEO

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

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