Мне нравится идея дать возможность любому пользователю моего сайта предлагать изменения на странице. Очень похоже на систему редактирования в Stack Exchange, но отличается тем, что редактировать должен каждый, а не только зарегистрированные пользователи. Все изменения будут проходить процесс утверждения.
Как я мог это реализовать?
plugins
user-access
Патрик Клуг
источник
источник
Ответы:
Различают содержание сообщения, название и автора
Как и в случае с чем-то, что было сделано несколько месяцев назад, вот самый простой и наиболее надежный способ будущего (который я мог бы применить), чтобы проверить, были ли внесены изменения в контент или заголовок или изменился автор:
Чтобы кратко объяснить мой сценарий: я выбирал сообщения из удаленного местоположения через удаленный API. Затем я возвратил
global $post
, во время одного пост-цикла, содержащий либо исходные данные, либо новые данные. Таким образом, я перешел к настройке всех других значений записей, которые мне не нужно было проверять на наличие изменений.Предлагая редактировать
Главный факт, о котором следует помнить при поиске места, где можно (временно) сохранить (отредактировать) содержимое публикации, - это запись в db
longtext
. Таким образом, место, где вы хотите сохранить предложенное редактирование, должно соответствовать этому требованию. Комментарии делают это.Кроме того, есть замечательный факт, что они предлагают API для удобного размещения их в цикле, поэтому он плавно интегрируется, легко настраивается и может быть быстро настроен. И последнее, но не менее важное: большинство тем уже снабжены комментариями, поэтому в систему можно легко вставить и подключиться практически к любой доступной теме.
Я бы предложил просто (или) расширить или изменить форму комментария. Используйте либо следующее, либо добавьте дополнительные поля с подключенным обратным вызовом
comment_form_default_fields
.Поэтому я добавил
hidden
полеcomment_approved
со значением,0
чтобы установить его в очереди. Не уверен, что это сработает или это (основное) значение на самом деле является метаданными комментария и его нужно добавить с помощьюadd_comment_meta()
сохранения. Если нет, то вы могли бы использовать что - то вдоль следующие строки кодыОтображение комментариев на стороне администратора
Здесь я бы пошел с простым расширением класса и пользовательской страницей администратора:
Более подробную информацию можно найти на WPEngineer .
Утверждение изменений
Затем вы можете добавить пользовательские действия и обработать предложенные изменения, используя первый код, который я показал, чтобы проверить, было ли изменение, а затем просто обновить сообщение. Сам комментарий содержит значение с ключом
comment_post_ID
, так что идентифицировать отредактированный идентификатор сообщения просто.Конечная нота
Я бы тоже хотел увидеть финальный плагин. Пожалуйста, свяжите это здесь :)
источник
wp_text_diff()
для фактического сравнения. Upvotes для других ответов.Моя идея проста.
Вы можете сделать
Edit Suggestion
ссылку внизу сообщений, которые имеют пользовательский шаблон, в котором используется текстовое поле (возможно, с редактором), которое связано с пользовательской таксономией со значением по умолчаниюpost content
.Любые изменения
content
будут сравниватьсяoriginal post content
после подачи (как черновик) и вводCAPTCHA code
с Diff алгоритмов , таких как PHP , рядный дифф пакет или Text-Diff PEAR пакет или , альтернативно , с помощью функции PHP в соответствии с этим для не слишком длинных текстов с комбинацией CSS.Затем путем сохранения значений в 3 пользовательских мета-боксах (на этой странице добавления / редактирования фоновой таксономии), которые показывают
и сохранение
Post ID
возможно сupdate_option()
функцией для последующего использования.После прочтения отредактированной версии и принятия администратором этот пост будет заменен оригинальным, как вы написали в файле functions.php.
источник
Ну, это довольно сложно, правильный ответ занял бы значительное время, чтобы написать. Так что это не настоящий ответ, просто некоторые мысли ..
Использование встраивания WordPress
wp_update_post
через ajax даст вам необходимую историю изменений, но не будет возможности одобрять изменения.Создание черновиков из правок по умолчанию невозможно, но здесь уже обсуждалось, есть ли способ составить редакцию опубликованной страницы или сообщения? Какие обходные пути вы использовали?
Вы можете попробовать и использовать Front-end Editor, но у вас не будет никакого контроля над опубликованными правками, поэтому попробуйте сделать это с другим плагином, таким как Revisionary, который допускает правки на основе правок, я понятия не имею, будут ли они работать вместе.
Если этого не произойдет, вам придется взломать плагин на основе 2 выше плагинов или написать что-то с нуля.
Мой простой подход заключается в том, чтобы иметь кнопку, которая переходит на другую страницу, которая выводит содержимое / данные публикации с использованием JSON , с которыми проще работать при использовании редакторов Ajax и WYSIWYG. Кнопка сохранения будет публиковаться как черновик, а не как публикация, и таким образом вы сможете контролировать изменения (см. Выше обсуждение WPSE о том, как этого добиться, это довольно сложно).
При этом возникают дополнительные сложности, такие как очистка, кодирование, спам, обработка мультимедиа, настраиваемые поля, временные метки, память и т. Д. Хорошая новость заключается в том, что WordPress уже имеет систему ревизий, которую вы можете подключить, и приличную способность работать с несколькими редакторами. ,
пс. Это хорошая идея для плагина.
источник