WP Branches For Post

Описание

WP Branches For Post предоставляет Git-подобный редакционный процесс для контента WordPress.

Вместо редактирования опубликованной записи на месте создайте черновую ветку. Публичный оригинал остаётся неизменным, пока редактируется ветка. Когда работа готова, явно объедините ветку обратно с той же ID исходной записи.

Версия 2.0 модернизирует первоначальный плагин 2020 года для современного редактора блоков WordPress и REST API.

Основной рабочий процесс

  1. Откройте опубликованную, приватную или запланированную запись, страницу либо произвольный тип записи.
  2. Выберите «Создать ветку».
  3. Редактируйте изолированную черновую ветку.
  4. Проверьте состояние ветки в панели «Ветка записи».
  5. Когда всё готово, объедините её с оригиналом.
  6. Оригинал сохраняет URL, ID, статус публикации, автора, дату, комментарии и внешнюю идентичность.
  7. Объединённая ветка перемещается в корзину, а не удаляется навсегда.

Безопасность

  • Ветки остаются непубличными и не могут случайно заменить оригинал при нажатии кнопки «Опубликовать» в 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_statuses
  • wbfp_create_branch_post_data
  • wbfp_excluded_meta_keys
  • wbfp_mergeable_post_fields
  • wbfp_branch_created
  • wbfp_before_merge
  • wbfp_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/.

Скриншоты

Установка

  1. Загрузите плагин в /wp-content/plugins/wp-branches-for-post или установите его через экран «Плагины» WordPress.
  2. Активируйте WP Branches For Post.
  3. Откройте существующую опубликованную запись и используйте панель «Ветка записи» или действие «Создать ветку».

Часто задаваемые вопросы

Получает ли ветка публичный 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

  • Первый выпуск.