Вопрос или проблема
Я пытаюсь заставить весь контент отправляться на проверку. Это значит, что если пользователь обновляет уже опубликованную страницу, то обновление будет ожидать одобрения кого-то другого.
Я не вижу варианта, когда смотрю на возможности WP. Большинство плагинов для ролей/возможностей пытаются сделать слишком много и в итоге создают беспорядок. Есть идеи?
Наверное, лучший вопрос: есть ли способ сохранить пост как ревизию, вместо того чтобы обновлять его?
Плагин Revisionary позволяет вам проверять ревизии постов/страниц перед тем, как они станут видимыми. Вы можете скачать его бесплатно здесь: https://wordpress.org/plugins/revisionary/
.
Ответ или решение
Вопрос, который вы подняли, касается важного аспекта управления контентом в WordPress – процесса проверки и управления обновлениями публикаций. Чтобы реализовать функцию принудительной проверки обновлений перед их публикацией, есть несколько подходов, которые вы можете рассмотреть.
1. Использование плагина Revisionary
Первым и наиболее простым решением является использование плагина Revisionary. Этот бесплатный плагин позволяет вам отправлять изменения в публикациях на проверку, прежде чем они будут опубликованы. Вот основные шаги по его установке и настройке:
- Перейдите в административную панель WordPress;
- Выберите «Плагины» и нажмите «Добавить новый»;
- В строке поиска введите "Revisionary" и установите его;
- Активируйте плагин после установки.
С помощью Revisionary авторы могут сохранять свои изменения в качестве черновиков, а редакторы или администраторы могут просматривать и утверждать их перед публикацией. Этот подход гарантирует, что все обновления проходят процесс проверки.
2. Создание пользовательского функционала
Если вам требуется больше контроля и вам не нравится подход с плагинами, вы можете разработать собственное решение. Этот метод требует знаний PHP и основ разработки WordPress. Вы можете использовать хуки и фильтры для изменения поведения обновления публикаций:
- Используйте хук
pre_post_update
для проверки, производит ли пользователь обновления в уже опубликованной публикации. - Если это так, измените статус публикации на
pending
, чтобы она ожидала одобрения.
Пример кода:
function force_submit_for_review( $post_id ) {
if ( get_post_status( $post_id ) == 'publish' ) {
// Проверяем, что только авторизованные пользователи могут делать это
if ( current_user_can( 'edit_post', $post_id ) ) {
// Переводим статус поста на "ожидание проверки"
wp_update_post( array(
'ID' => $post_id,
'post_status' => 'pending'
));
}
}
}
add_action( 'pre_post_update', 'force_submit_for_review' );
3. Альтернативные плагины
Если вам нужно что-то более полнофункциональное, вы можете рассмотреть другие плагины управления ролями и возможностями, такие как User Role Editor или Members. Они позволяют детально настраивать разрешения для всех ролей, но могут потребовать более глубокой настройки для достижения желаемого результата.
4. Публикация как редакция
На ваш запрос о возможности сохранять пост в качестве редакции вместо обновления: WordPress уже поддерживает концепцию ревизий. Чтобы создать новую редакцию записи, пользователь может просто сохранить свою работу как черновик. Таким образом, изменения не будут немедленно опубликованы, и можно сохранить их для дальнейших доработок.
Заключение
Преимущества реализации процесса проверки обновлений в вашем контенте очевидны. Это позволяет повысить качество публикуемого материала и снизить риск ошибок. Используя плагин Revisionary или создавая собственное решение с помощью PHP, вы можете настроить систему, отвечающую вашим требованиям. Не забудьте протестировать любое решение на тестовом сайте, прежде чем внедрять его в рабочую среду, чтобы избежать потенциальных конфликтов или ошибок.