Как настроить автоматическое сохранение changelog плагина или темы в WordPress

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

Почему автоматическое сохранение changelog важно для разработчиков WordPress

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

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

Основные задачи автоматизации changelog

  • Сбор информации о внесённых изменениях (commit-сообщения, теги версии и т.д.).
  • Форматирование changelog в читаемый вид.
  • Обновление файла readme.txt или отдельного документа changelog.md.
  • Возможность интеграции с системами контроля версий (Git) и CI/CD.

Реализация автоматического сохранения changelog с использованием Git и PHP

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

Пример функции, которая может быть интегрирована в ваш плагин или тему для генерации changelog из Git-коммитов:

function wpmy_generate_changelog() {
    $output = [];
    // Команда git для получения сообщений коммитов с тегами релизов
    exec('git log --pretty=format:"%h %s" --no-merges', $output);

    $changelog = "# Changelog\n\n";
    foreach ($output as $line) {
        // Фильтруем по ключевым словам, например, "feat", "fix", "update"
        if (preg_match('/\b(feat|fix|update|refactor)\b/i', $line)) {
            $changelog .= "- " . $line . "\n";
        }
    }

    // Сохраняем в файл changelog.md в корне плагина
    file_put_contents(plugin_dir_path(__FILE__) . 'changelog.md', $changelog);
}

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

Интеграция с хуком обновления плагина

Добавим вызов генерации changelog при обновлении версии плагина в WordPress:

add_action('upgrader_process_complete', 'wpmy_updater_changelog', 10, 2);

function wpmy_updater_changelog($upgrader, $options) {
    if ($options['action'] == 'update' && $options['type'] == 'plugin') {
        // Проверяем обновление конкретного плагина
        if (isset($options['plugins']) && in_array(plugin_basename(__FILE__), $options['plugins'])) {
            wpmy_generate_changelog();
        }
    }
}

Такой подход автоматизирует обновление changelog при каждом обновлении плагина.

Использование плагинов для автоматизации changelog в WordPress

Если вы предпочитаете готовые решения, стоит обратить внимание на плагины, которые помогают управлять changelog:

  • WP Changelog — простой плагин для отображения и управления журналом изменений прямо в админке.
  • VersionPress — более продвинутый инструмент с контролем версий и возможностью отката изменений.
  • GitHub Changelog Generator — интеграция с GitHub для автоматического создания changelog на основе релизов и pull request'ов (нужна настройка с внешними инструментами).

Для интеграции с WPMy и плагинами с WPSHOP.ru можно расширить функциональность, добавив вызов генерации changelog при публикации новых версий через их API.

Практические советы по ведению changelog

Чтобы changelog был полезным и удобным, придерживайтесь следующих правил:

  • Стандартизируйте формат сообщений коммитов. Используйте соглашения типа Conventional Commits (feat, fix, docs и т.д.).
  • Обновляйте changelog регулярно. Не откладывайте — автоматизация поможет.
  • Делайте changelog понятным для пользователя. Избегайте технического жаргона, если changelog предназначен для конечных пользователей.
  • Храните changelog рядом с кодом. Это облегчает доступ и поддержку.

Пример форматирования changelog.md

# Changelog

## [1.2.0] - 2024-06-01
### Added
- Добавлена поддержка REST API для новых эндпоинтов

### Fixed
- Исправлена ошибка с кешированием данных

### Changed
- Обновлены стили для админки

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

Как создать автоматический импорт продукции в WooCommerce из XML файла
20.01.2026
Автоматическое удаление нерабочих изображений в WordPress
13.04.2026
Ограничение на загрузку файлов в WordPress: настройка и примеры
16.04.2026
Как удалить или изменить метаданные из изображений WordPress
31.01.2026
Как динамически изменить заголовок страницы в WordPress
11.02.2026