Как создать автоматический контроль версий файлов темы WordPress

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

Почему важен контроль версий файлов темы WordPress

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

  • Минимизации рисков при обновлениях темы;
  • Отладки и быстрого устранения ошибок;
  • Организации командной работы;
  • Обеспечения безопасности и сохранности кода.
Без встроенного механизма в WordPress, разработчикам приходится использовать внешние системы контроля версий (например, Git), но это не всегда удобно для конечных пользователей и администраторов сайта.

Автоматический контроль версий с помощью плагина — обзор решения

Мы создадим плагин wpbook_version_control, который при каждом изменении файла темы будет сохранять его копию с отметкой времени. Такой подход позволит быстро восстановить нужную версию без необходимости подключения к Git или другим системам.

Основные возможности плагина:

  • Отслеживание изменений PHP, CSS, JS и других файлов темы;
  • Хранение резервных копий в папке /wp-content/uploads/wpbook-version-control/ с маркировкой времени;
  • Интерфейс в админке для просмотра и восстановления файлов;
  • Автоматическое удаление резервных копий старше заданного срока для экономии места.

Создание плагина для автоматического контроля версий

Начнем с создания базового файла плагина wpbook-version-control.php в папке /wp-content/plugins/wpbook-version-control/:

<?php
/**
 * Plugin Name: WPBook Version Control
 * Description: Автоматический контроль версий файлов темы WordPress.
 * Version: 1.0
 * Author: WPBook
 */

// Хук для отслеживания изменения файлов темы
add_action('save_post', 'wpbook_version_control_save_post');

function wpbook_version_control_save_post($post_id) {
    // Проверяем, что это не автосохранение
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }

    // Получаем путь к активной теме
    $theme_dir = get_template_directory();

    // Папка для хранения версий
    $backup_dir = wp_upload_dir()['basedir'] . '/wpbook-version-control';

    if (!file_exists($backup_dir)) {
        wp_mkdir_p($backup_dir);
    }

    // Получаем список файлов темы (например, PHP и CSS)
    $files = wpbook_version_control_get_theme_files($theme_dir);

    foreach ($files as $file) {
        wpbook_version_control_backup_file($file, $backup_dir);
    }
}

// Функция для получения файлов темы
function wpbook_version_control_get_theme_files($dir) {
    $files = [];
    $rii = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));

    foreach ($rii as $file) {
        if ($file->isDir()){ 
            continue;
        }
        $ext = pathinfo($file->getFilename(), PATHINFO_EXTENSION);
        if (in_array($ext, ['php', 'css', 'js'])) {
            $files[] = $file->getPathname();
        }
    }
    return $files;
}

// Функция создания резервной копии файла
function wpbook_version_control_backup_file($file_path, $backup_dir) {
    $time = date('Ymd-His');
    $relative_path = str_replace(get_template_directory() . '/', '', $file_path);
    $backup_path = $backup_dir . '/' . str_replace('/', '_', $relative_path) . "_{$time}";

    if (file_exists($file_path)) {
        copy($file_path, $backup_path);
    }
}

Этот код при сохранении записи в WordPress автоматически создает резервные копии файлов темы (PHP, CSS, JS). Мы используем хук save_post, чтобы сработать при сохранении, но для полного охвата можно добавить и другие хуки или настроить крон-задачи.

Оптимизация и расширение плагина

Чтобы плагин был удобнее и не занимал слишком много места, стоит добавить функции:

  • Автоматическое удаление резервных копий старше 30 дней;
  • Интерфейс отображения резервных копий в админке;
  • Возможность восстановить файл из резервной копии;
  • Логирование действий для отслеживания изменений.
Например, для удаления старых файлов можно добавить функцию:

function wpbook_version_control_cleanup_backups() {
    $backup_dir = wp_upload_dir()['basedir'] . '/wpbook-version-control';
    if (!file_exists($backup_dir)) {
        return;
    }

    $files = glob($backup_dir . '/*');
    $now = time();
    foreach ($files as $file) {
        if (is_file($file)) {
            if ($now - filemtime($file) > 30 * DAY_IN_SECONDS) {
                unlink($file);
            }
        }
    }
}

// Запускаем очистку при загрузке админки
add_action('admin_init', 'wpbook_version_control_cleanup_backups');

Примеры плагинов для расширенного контроля версий и бэкапов

Если не хотите писать собственный плагин, обратите внимание на уже готовые решения, которые могут помочь с контролем версий и бэкапами:

  • Clearfy Pro — плагин для оптимизации и безопасности, включает функции автоматического бэкапа и очистки;
  • Expert Review — позволяет делать ревью кода, что помогает при командной разработке;
  • My Popup — для уведомлений, можно использовать для оповещений о новых версиях.

Как интегрировать контроль версий с системой деплоя

Для продвинутых проектов стоит подумать о интеграции такого контроля с системой деплоя — например, через GitHub Actions или Bitbucket Pipelines. Тогда резервные копии будут сохраняться не только локально, но и в удаленном репозитории, что значительно повышает надежность.

Пример простого скрипта для деплоя с использованием WP-CLI, который можно запускать после коммита:

wp theme update mytheme --version=1.2.3

Или можно настроить автоматическую выгрузку файлов темы с помощью rsync на сервер при каждом обновлении в репозитории.

Выводы и рекомендации

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

Рассмотрите возможность использования готовых решений с WPShop и интеграции с внешними системами контроля версий для максимального комфорта и надежности.

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

⭐⭐⭐⭐⭐
Как создать автоматический импорт постов из внешнего источника в WordPress
26.01.2026
Как удалить пустые категории в WordPress из базы данных
30.12.2025
Как автоматически удалять неактивных пользователей WordPress
16.04.2026
Как создать автоматический контроль версий файлов темы WordPress
13.04.2026
Как использовать pre_get_posts для изменения запросов в WordPress без плагинов
19.04.2026
×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее