Создание собственного плагина для WordPress – отличный способ не только решить конкретные задачи оптимизации сайта, но и повысить свои навыки разработки под эту CMS. В этой статье мы подробно разберём, как шаг за шагом создать простой плагин для оптимизации, который поможет ускорить загрузку страниц, убрать лишние запросы и повысить общую производительность.
Почему стоит создавать собственный плагин для оптимизации WordPress
Множество готовых плагинов для оптимизации предлагают множество функций, но зачастую они слишком «тяжёлые» или включают ненужный функционал. Создавая свой плагин, вы получаете:
- Легковесное решение без лишнего кода;
- Возможность адаптировать функционал под конкретные задачи;
- Контроль за тем, как именно происходит оптимизация;
- Уверенность в безопасности и совместимости кода.
Кроме того, собственный плагин — это отличный способ глубже понять, как работает WordPress и его API.
Основы создания плагина: структура и базовый код
Начнём с создания минимальной структуры плагина. В каталоге wp-content/plugins/ создайте папку clearfy-optimizer. Внутри неё создайте файл clearfy-optimizer.php с таким содержимым:
<?php
/**
* Plugin Name: Clearfy Optimizer
* Description: Простой плагин для оптимизации загрузки WordPress.
* Version: 1.0
* Author: Clearfy Team
*/
// Предотвращаем прямой запуск файла
if (!defined('ABSPATH')) {
exit;
}
Этот код содержит базовую информацию о плагине и защиту от прямого вызова скрипта.
Добавление функции удаления ненужных скриптов и стилей
Одна из самых частых задач оптимизации — отключить загрузку ненужных скриптов и стилей. Например, отключим стили и скрипты эмодзи, которые часто не нужны на сайте.
function clearfy_disable_emojis() {
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('admin_print_styles', 'print_emoji_styles');
// Отключаем DNS prefetch эмодзи
add_filter('emoji_svg_url', '__return_false');
}
add_action('init', 'clearfy_disable_emojis');Этот код уменьшит количество запросов и немного ускорит загрузку страниц.
Оптимизация загрузки скриптов: подключение только на нужных страницах
Часто скрипты подключаются на всех страницах, даже там, где они не нужны. Например, плагин слайдера может быть нужен только на главной странице. Мы можем добавить условие для подключения скриптов.
function clearfy_enqueue_scripts() {
if (is_front_page()) {
wp_enqueue_script('clearfy-slider', plugin_dir_url(__FILE__) . 'js/slider.js', array('jquery'), '1.0', true);
}
}
add_action('wp_enqueue_scripts', 'clearfy_enqueue_scripts');Так мы исключим лишнюю загрузку файлов на страницах, где они не нужны.
Пример: отключение Gutenberg стилей на фронтенде
Если вы не используете Gutenberg-блоки на фронтенде, стили редактора можно убрать для ускорения загрузки:
function clearfy_remove_block_library_css() {
if (!is_admin()) {
wp_dequeue_style('wp-block-library');
wp_dequeue_style('wp-block-library-theme');
wp_dequeue_style('wc-block-style'); // если установлен WooCommerce
}
}
add_action('wp_enqueue_scripts', 'clearfy_remove_block_library_css', 100);Это уменьшит объем CSS на сайте.
Кеширование результатов запросов с помощью Transients API
Для оптимизации производительности часто применяют кеширование. WordPress предоставляет удобный Transients API для временного хранения данных в базе данных.
Например, если у вас есть функция, которая получает данные из внешнего API или выполняет сложный запрос, то кеширование может существенно сэкономить ресурсы.
function clearfy_get_expensive_data() {
$cache_key = 'clearfy_expensive_data';
$data = get_transient($cache_key);
if ($data === false) {
// Здесь может быть сложный запрос или вызов API
$data = 'Результат тяжелой операции';
// Сохраняем в кеш на 12 часов
set_transient($cache_key, $data, 12 * HOUR_IN_SECONDS);
}
return $data;
}
Используя этот подход, вы уменьшите нагрузку на сервер и ускорите обработку страниц.
Оптимизация базы данных: удаление ревизий и автосохранений
Со временем база данных WordPress может разрастаться из-за большого количества ревизий и автосохранений. Это замедляет запросы и увеличивает размер БД.
Добавим в плагин функционал для удаления ревизий и автосохранений по расписанию, используя wp_cron.
function clearfy_cleanup_revisions() {
global $wpdb;
$wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'revision'");
$wpdb->query("DELETE FROM {$wpdb->posts} WHERE post_type = 'autosave'");
}
function clearfy_schedule_cleanup() {
if (!wp_next_scheduled('clearfy_daily_cleanup')) {
wp_schedule_event(time(), 'daily', 'clearfy_daily_cleanup');
}
}
add_action('wp', 'clearfy_schedule_cleanup');
add_action('clearfy_daily_cleanup', 'clearfy_cleanup_revisions');
<Таким образом, база будет очищаться ежедневно без вашего вмешательства.
Заключение: расширение и адаптация плагина
Мы рассмотрели базовые техники создания собственного плагина для оптимизации WordPress: отключение ненужных скриптов, условное подключение ресурсов, кеширование данных и очистка базы данных. Этот функционал можно расширять в зависимости от ваших задач.
Например, можно добавить оптимизацию изображений на лету, интеграцию с CDN, или инструменты для отложенной загрузки скриптов и стилей. Главное — понять, что контроль над кодом и точечные улучшения часто эффективнее и надежнее, чем громоздкие универсальные решения.