Есть ли способ создать черновик редакции опубликованной страницы или записи? Какие обходные пути вы использовали?
Допустим, я уже опубликовал страницу или запись. Теперь я хочу внести изменения, но хочу, чтобы коллега проверил их перед публикацией. Есть ли способ сделать это?
Редактирование: Я понимаю, что в настоящее время это невозможно как таковое, и меня интересуют креативные обходные пути.
На сайте, над которым я сейчас работаю, у меня также есть отдельный защищенный паролем 'staging' сайт для создания черновиков крупных изменений/дополнений контента, и после одобрения я копирую и вставляю их на действующий сайт. Интересно, использовал ли кто-нибудь подобный метод, но, возможно, автоматизировал 'перенос' на действующий сайт?
Я знаю об этом вопросе: Синхронизация базы данных между dev/staging и production, но он больше касается полной синхронизации всех баз данных, а не отдельных страниц или записей.
Сейчас предлагаю вознаграждение, чтобы попытаться найти дополнительные идеи для обходных путей.
Должна быть возможность добавить кнопку Сохранить как изменённую копию в блоке публикации. Для этого нужно подключиться к хуку content_save_pre, затем скопировать содержимое и все метаданные в новую запись со статусом черновика. После проверки записи необходимо объединить обратно.
Я ещё не реализовал это, но такая функциональность действительно необходима.
Мне нравится эта простая идея. API нужна только функция Copy Post Revision, которая сможет скопировать полную ревизию, включая метаданные, в новый (еще не созданный) или существующий пост. После этого черновик копии поста можно будет позже скопировать в оригинальный пост.
hakre
http://wordpress.org/extend/plugins/revisionary/
Этот плагин сделает то, что вам нужно. Он создает роль Рецензента (Revisor), которая находится где-то между Ролью Участника (Contributor) и Редактора (Editor). Пользовательский интерфейс можно улучшить, а внутренний код вынужден обходить множество недостающих функций WordPress, но да, он решает вашу проблему: он позволит вам сохранять черновик (фактически 'ожидающую' 'ревизию').
Обновление 2018: Revisionary, похоже, прекратил разработку около 3 лет назад. Однако, ознакомьтесь с ответом Тессы о Revisionize (https://wordpress.org/plugins/revisionize). Revisionize выглядит как лучшее решение.
Обновление 2019: Revisionary теперь принадлежит и активно разрабатывается PublishPress. Оригинальный автор также сотрудничает с ними для его поддержки.
Я только что протестировал этот плагин на только что обновленной версии 3.1.2. Процесс применения ожидающей ревизии кажется сломанным. Учитывая скудность документации, неясно, сломано ли это в 3.1.2, или предполагаемый UX заключается в том, что утверждающая сторона должна вручную копировать-вставлять ревизию в опубликованную запись. В любом случае, я не буду выпускать это для своих пользователей.
marfarma
Интерфейс довольно странный, но это потому, что нет реального способа правильно интегрировать его в WP, насколько я могу судить. В WP просто не хватает хуков для этого. Когда я тестировал, он все же работал... где-то есть кнопка или ссылка, которая 'восстанавливает' ревизию. Вам не должно быть необходимости что-то копировать-вставлять. С тех пор я перешел на то, чтобы пользователь просто отправлял редактору запрос на ревизию по электронной почте, именно потому что мне не нравится интерфейс.
WraithKenny
Согласен, этот плагин часто не работает у меня и ужасно неудобен в использовании.
James
Я не использовал это 3,5 года; не думаю, что это всё ещё работает. Должен быть новый/лучший способ сделать это, так как ядро WordPress значительно улучшилось с момента публикации.
WraithKenny
Привет @e100;
Если тебя интересует индивидуальное решение в виде плагина, я могу предложить несколько вариантов.
Процесс, похожий на то, что @toscho назвал "Сохранить как изменённую копию", но с некоторыми отличиями. Плагин может блокировать редактирование опубликованных записей, но позволять создавать производные записи с новым статусом, например "Черновик обновления", которые будут связаны с оригинальной записью через произвольное поле. Эти производные записи можно редактировать, проверять и т.д., но вместо возможности публикации будет вариант заменить оригинальную запись обновлённой версией.
Другой вариант — использовать встроенную систему ревизий, хотя мне нужно будет разобраться, как отображать в браузере версию, которая не является последней; возможно, сохранять содержимое в произвольном поле и позволять продолжать работу над ним.
Третий вариант — настроить второй сайт на WordPress в качестве песочницы для редактирования, использовать веб-сервисы для получения записей, позволять редактировать их удалённо, а затем, когда они будут готовы, отправлять обратно на основной сайт.
Похожий на третий вариант — настроить песочницу для редактирования с помощью мультисайта WordPress и создать непубличные блоги для каждого автора в качестве их личной песочницы.
Повторюсь, все эти варианты потребуют разработки кастомного плагина.
Если ты ищешь готовые плагины, можешь взглянуть на эти, хотя у меня пока нет конкретного опыта с ними, так что я не знаю, подойдут ли они под твои нужды:
Assignment Desk — инструмент для редакторов новостных организаций, использующих WordPress в качестве CMS. Цель плагина — упростить и сделать более эффективным взаимодействие с сообществом в процессе создания новостей.
Edit Flow — предлагает набор функций для переопределения редакционного рабочего процесса в WordPress.
Peter's Post Notes — добавляет заметки в боковой панели экранов редактирования записей и страниц в WordPress 2.8 и выше. При использовании с Peter's Collaboration E-mails 1.2 и выше заметки отправляются вместе с письмами в рабочем процессе. Также есть система общих и приватных заметок на дашборде.
твое первое предложение звучит как очень крутое решение! О, и с Днем Благодарения, Майк, учитывая, что ты ВСЕГДА тот, кто дает отличные советы/решения всем нам!
NetConstructor.com
Это довольно старый вопрос, и при просмотре некоторых упомянутых здесь плагинов я заметил, что многие из них больше не поддерживаются или не совсем то, что я искал.
В итоге я нашел плагин под названием Revisionize, который мне понравился. Хотя его репутация и популярность пока невысоки из-за относительной новизны, он мне приглянулся.
Преимущества:
- Удобный интерфейс в WordPress, кнопки легко найти, есть предупреждения и пояснения о действиях при их нажатии.
- Имеет
5-звездочный4.9-звездочный рейтинг - По-прежнему поддерживается разработчиком
- Совместим с плагином Advanced Custom Fields
- Совместим с плагином Public Post Preview
Недостатки:
Всего 300+4,000+ активных установокВсего 4 отзыва21 отзыв- Нет поддержки Gutenberg
Списки обновлены 15 августа 2019 года. Несмотря на то, что это отличный плагин, если вы используете редактор блоков Gutenberg, он может вам не подойти.
Привет, я автор плагина Revisionize. Он прошел долгий путь — скоро выйдет версия 2.1 с улучшенной совместимостью для мультисайтов/сетей. В последней версии есть базовая панель настроек, а также несколько платных дополнений на https://revisionize.pro, которые позволяют участникам с ролью "Участник" (Contributors) создавать ревизии существующего контента и отправлять изменения на проверку. Сейчас у плагина более 1000 активных установок и 11 отзывов с 5 звездами.
Jamie Chong
Да, у вас уже 18 отзывов с 5 звездами! Я действительно считаю, что этот плагин (и Revisionize) сейчас должен быть принятым ответом.
WraithKenny
К сожалению, в данный момент это невозможно. Если страница/запись уже опубликована, единственный вариант — создать новую страницу/запись для внесения правок и опубликовать её приватно, чтобы коллега мог проверить изменения. Затем заменить содержимое основной страницы/записи на обновлённую версию.
Для информации: Работа с черновиками уже опубликованного контента — это нестандартный рабочий процесс для большинства пользователей WordPress. За последний месяц я слышал как минимум о трёх различных подходах к этому вопросу... Так как единого стандарта для подачи правок в уже опубликованный контент не существует, шансы на то, что такая функция появится в WordPress, весьма малы.
Хм, мне действительно кажется странным, что такой рабочий процесс не пользуется большим спросом, особенно учитывая, что WordPress все чаще продвигают как полнофункциональную CMS с пользовательскими типами контента и т.д.
e100
Проблема в том, что "такой рабочий процесс" определяется по-разному множеством людей. Если бы был стандарт, его было бы легко внедрить. Без стандарта кастомизация WP под один рабочий процесс отталкивает других. В текущей ситуации проще позволить разработчикам создавать индивидуальные решения для конкретных случаев.
EAMann
Мне было бы очень интересно услышать эти три разных способа, которыми люди хотят управлять рабочим процессом.
MikeSchinkel
Две функции, которые я могу вспомнить конкретно: 1) На основе ролей: Участники могут редактировать содержимое записи и нажимать "отправить на рецензирование", изменения должны быть проверены перед публикацией. 2) Раздельные ревизии: Пользователи могут выбрать любую ревизию записи и автоматически скопировать её в новую запись без отката существующей версии.
EAMann
возможно простое решение: плагин http://wordpress.org/extend/plugins/duplicate-post/ для копирования записей
Есть плагин под названием Live Drafts, который, кажется, работает довольно хорошо?
Если вы всё ещё ищете решение, посмотрите это: https://github.com/malithmcr/wp-draft-published
Malith
Теперь для этого существует очень удобное решение в виде плагина Drafts of Post Revisions.
Пользователи могут получить разрешение на создание черновика ревизии опубликованной записи (или пользовательского типа записи), который создается как дочерняя копия записи.
Черновики можно сравнивать с их опубликованным родителем с помощью функции сравнения ревизий.
При публикации черновика ревизии все изменения интегрируются обратно в родительскую запись, а черновик удаляется. Также можно поддерживать несколько черновиков одновременно.
Рекомендую этот плагин всем - он становится стандартным инструментом для сайтов на WordPress. Однако я подозреваю, что в ближайшем будущем подобный функционал может быть разработан в ядре WordPress.
Нашел этот ответ здесь, который сработал для меня. Я немного изменил его, так как использую пользовательские роли.
function published_to_pending( $post_id ) {
global $post;
if ( ! is_object( $post ) ) {
return;
}
if ( ! current_user_can( 'publish_posts' ) && $post->post_status == 'publish' ) {
// остановить рекурсивный вызов
remove_action( 'save_post', 'published_to_pending' );
// обновить запись, что снова вызывает save_post
wp_update_post( array( 'ID' => $post_id, 'post_status' => 'pending' ) );
// снова подключить эту функцию
add_action( 'save_post', 'published_to_pending' );
}
}
add_action( 'save_post', 'published_to_pending' );
Привет @e100 :)
Я думаю, что умным решением будет использовать существующий бесплатный плагин. Он делает всё, о чём ты написал. Просто скачай его с WordPress.org: https://wordpress.org/plugins/revision-manager-tmc/
Этот плагин очень часто и регулярно обновляется
Revision Manager TMC отлично работает вместе со вторым бесплатным плагином для редактирования возможностей пользовательских ролей - User Role Editor https://wordpress.org/plugins/user-role-editor/
На 2019 год это самое полное решение. Оно похоже на Revisionize, но более интуитивное и завершённое. 1) Редакции привязаны к оригинальным записям; 2) Позволяет назначить редакторам "Роль участника", ограничивая их доступ к исходной записи; 3) Редакции действительно выглядят как редакции — скрывают параметры публикации и т.д.
Timofey Drozhzhin
Теперь в плагине (ранее Yoast) Duplicate Post появилась новая функция "Переписать и переопубликовать". Она позволяет сохранять ваши правки как черновик и планировать повторную публикацию, объединяя изменения с оригиналом.
Подробнее можно узнать здесь: https://yoast.com/help/how-to-use-the-rewrite-republish-feature-in-yoast-duplicate-post/
Скорее всего, я в конечном итоге воспользуюсь одним из плагинов, упомянутых в других ответах, но когда мне понадобилась эта функциональность и у меня не было времени искать плагины, я просто убеждался, что ревизии работают, сохранял изменения и сразу же откатывал их.
Теперь мой "черновик" находится в системе ревизий.
Не лучший вариант для рабочей системы, но вполне приемлемо для разработки, пока вы не решите, какой плагин использовать.