Описание
WP Branches For Post предоставляет Git-подобный редакционный процесс для контента WordPress.
Вместо редактирования опубликованной записи на месте создайте черновую ветку. Публичный оригинал остаётся неизменным, пока редактируется ветка. Когда работа готова, явно объедините ветку обратно с той же ID исходной записи.
Версия 2.0 модернизирует первоначальный плагин 2020 года для современного редактора блоков WordPress и REST API.
Основной рабочий процесс
- Откройте опубликованную, приватную или запланированную запись, страницу либо произвольный тип записи.
- Выберите «Создать ветку».
- Редактируйте изолированную черновую ветку.
- Проверьте состояние ветки в панели «Ветка записи».
- Когда всё готово, объедините её с оригиналом.
- Оригинал сохраняет URL, ID, статус публикации, автора, дату, комментарии и внешнюю идентичность.
- Объединённая ветка перемещается в корзину, а не удаляется навсегда.
Безопасность
- Ветки остаются непубличными и не могут случайно заменить оригинал при нажатии кнопки «Опубликовать» в WordPress.
- Каждая новая ветка сохраняет снимок исходного состояния.
- Если оригинал изменился после создания ветки, обычное объединение блокируется.
- Принудительное объединение доступно только как явное действие после проверки.
- REST-эндпоинты используют проверки прав WordPress в callback-функциях разрешений.
- Плагин больше не обновляет ревизии или родительские записи вложений прямыми SQL-запросами.
- WordPress создаёт обычную историю ревизий при обновлении исходной записи.
Что синхронизируется
Во время объединения плагин синхронизирует редактируемое содержимое записи, метаданные и все таксономии, сохраняя идентичность и статус публикации оригинала.
ID медиафайлов, на которые ссылаются содержимое записи и метаданные изображения записи, остаются прежними. Родительские записи вложений не меняются.
Редактор блоков
Панель документа «Ветка записи» показывает:
- Создать ветку в исходной записи.
- Существующие активные ветки.
- Ссылка на исходную запись из ветки.
- Состояние конфликта.
- Объединить с оригиналом.
- При наличии конфликта принудительно объединить после проверки.
- Удалить ветку.
Классический редактор, действия строк списка записей и панель администратора сохраняют облегчённые элементы совместимости.
Совместимость с 1.x
Версия 2.0 распознаёт ветки, созданные в формате метаданных 1.x.
У старых веток нет базового снимка, поэтому они отображаются с состоянием конфликта «неизвестно» и требуют явного принудительного объединения после проверки оригинала.
Старое автоматическое поведение «опубликовать ветку и перезаписать оригинал» намеренно удалено.
Об авторе
WP Branches For Post поддерживает Hao Kexin — full-stack инженер и создатель продуктов, живущий в Японии. С 2018 года его работа охватывает требования, проектирование систем, разработку приложений, системы данных, развёртывание, наблюдаемость и долгосрочную эксплуатацию в production.
Сейчас он сосредоточен на публичных данных, финансовом анализе, ИИ и сквозной продуктовой инженерии. Он создаёт и поддерживает проекты, включая Time2Analyze — production-систему для раскрытий публичных компаний, структурированных финансовых данных, аналитики, Excel, MCP и ИИ-процессов.
Подробнее об авторе и текущих проектах: https://time2log.com/about/
Примечания для разработчиков
Полезные фильтры и действия включают:
wbfp_branchable_post_statuseswbfp_create_branch_post_datawbfp_excluded_meta_keyswbfp_mergeable_post_fieldswbfp_branch_createdwbfp_before_mergewbfp_after_merge
Критичные для безопасности инварианты продолжают применяться после фильтров расширения: новая ветка остаётся черновиком того же типа записи, обязательные служебные метаданные исключаются, а объединяемые базовые поля ограничены редакционным allowlist плагина.
См. ARCHITECTURE.md для потока данных создания/объединения и SECURITY.md для границ авторизации, CSRF, REST, конфликтов и синхронизации данных.
CI намеренно не запускается для каждого коммита feature-ветки. Полная проверка PHP/build/Plugin Check выполняется на master, релизных тегах или при ручном запуске workflow.
Исходный код редактора блоков находится в src/index.js и собирается с помощью @wordpress/scripts.
Читаемый исходный код и инструменты сборки поддерживаются по адресу https://github.com/hsxk/WP-Branches-For-Post/.
Скриншоты




Установка
- Загрузите плагин в
/wp-content/plugins/wp-branches-for-postили установите его через экран «Плагины» WordPress. - Активируйте WP Branches For Post.
- Откройте существующую опубликованную запись и используйте панель «Ветка записи» или действие «Создать ветку».
Часто задаваемые вопросы
-
Получает ли ветка публичный URL?
-
Нет. Ветка — это изолированный рабочий черновик. Публикация ветки через обычный редактор блокируется; используйте «Объединить с оригиналом».
-
Изменяет ли объединение URL или ID исходной записи?
-
Нет. Объединение обновляет существующую исходную запись и сохраняет её идентичность, slug, статус публикации, автора и исходные даты.
-
Что произойдёт, если кто-то изменит оригинал, пока я работаю в ветке?
-
Сохранённый базовый снимок больше не совпадает. Плагин помечает ветку как конфликтующую и блокирует обычное объединение, чтобы новые изменения не были незаметно перезаписаны.
-
Можно ли по-прежнему объединить старую ветку 1.x?
-
Да, но поскольку версия 1.x не сохраняла базовый снимок, после проверки требуется явное принудительное объединение.
-
Поддерживаются ли произвольные типы записей?
-
Да, если пользователь может редактировать запись, а тип записи использует стандартные API редактирования WordPress. Таксономии и метаданные синхронизируются с веткой.
Отзывы
Нет отзывов об этом плагине.
Участники и разработчики
«WP Branches For Post» — проект с открытым исходным кодом. В развитие плагина внесли свой вклад следующие участники:
Участники«WP Branches For Post» переведён на 8 языков. Благодарим переводчиков за их работу.
Перевести «WP Branches For Post» на ваш язык.
Заинтересованы в разработке?
Посмотрите код, проверьте SVN репозиторий, или подпишитесь на журнал разработки по RSS.
Журнал изменений
2.0.0
- Переработан процесс веток для современного WordPress.
- Добавлена интеграция с боковой панелью документа редактора блоков.
- Добавлены REST-эндпоинты с callback-функциями разрешений на основе возможностей.
- Добавлено обнаружение конфликтов по базовому снимку.
- Объединение, запускаемое публикацией, заменено явными действиями объединения.
- Предотвращена публикация записей-веток.
- Переработана синхронизация метаданных с сохранением многозначных ключей и удалений.
- Переработана синхронизация таксономий, чтобы передавались и очищенные таксономии.
- Удалены прямые SQL-операции с ревизиями и родителями вложений.
- При объединении сохраняются ID, URL, статус, автор, slug и даты публикации исходной записи.
- Объединённые и удалённые ветки перемещаются в корзину вместо безвозвратного удаления.
- Добавлена совместимость с ветками, созданными в версии 1.x.
- Добавлены современные инструменты разработки и CI-проверки синтаксиса/сборки.
1.3.0
- Добавлены фильтры для разработчиков и очистка кода.
1.2.0
- Добавлены переводы zh_CN, zh_TW и ja.
1.1.0
- Добавлены действия в панели администратора/списке и начальная поддержка редактора блоков.
1.0.0
- Первый выпуск.
