Me gusta la idea de permitir que cualquier usuario de mi sitio web sugiera modificaciones en una página. Al igual que el sistema de edición en Stack Exchange, pero diferente en el sentido de que cualquiera debería poder editar, no solo los usuarios registrados. Todas las ediciones pasarían por un proceso de aprobación.
¿Cómo podría implementar eso?
plugins
user-access
Patrick Klug
fuente
fuente
Respuestas:
Difunde el contenido de la publicación, el título y el autor
Como tenía que hacer algo relacionado hace un mes, esta es la forma más fácil y más a prueba de futuro (que podría multar) para verificar si hay un cambio realizado en el contenido o el título o si el autor cambió:
Para explicar brevemente mi escenario: estaba buscando publicaciones desde una ubicación remota a través de una API remota. Luego devolví el
global $post
, durante un ciclo de publicación único, que contiene los datos originales o los nuevos datos. De esta manera, me moví estableciendo todos los demás valores de publicación que no necesitaba para verificar los cambios.Proponiendo la edición
El hecho principal que hay que tener en cuenta al buscar un lugar donde se pueda guardar (temporalmente) una copia-edición del contenido de la publicación es que el contenido es una entrada de db
longtext
. Por lo tanto, el lugar donde se desea guardar la edición sugerida debe cumplir ese requisito. Los comentarios hacen eso.Luego está el hecho de que ofrecen una API para ubicarlos en un bucle, por lo que se integra sin problemas, es altamente personalizable y se puede configurar rápidamente. Por último, pero no menos importante, la mayoría de los temas ya vienen con comentarios integrados, por lo que es fácil aprovechar el sistema y conectarse a casi cualquier tema disponible.
Sugeriría simplemente (o) extender o alterar el formulario de comentarios. Utilice lo siguiente o agregue campos adicionales con una devolución de llamada conectada
comment_form_default_fields
.Así que agregué un
hidden
campocomment_approved
con el valor de0
establecerlo en la cola. No estoy seguro de si esto funcionará o si este valor (principal) es realmente comentar metadatos y necesita agregarse mediante el usoadd_comment_meta()
durante el guardado. De lo contrario, podría usar algo a lo largo de las siguientes líneas de códigoMostrar los comentarios en el lado del administrador
Aquí iría con una extensión de clase simple y una página de administración personalizada:
Se puede encontrar más información en WPEngineer .
Aprobar ediciones
Luego, puede agregar acciones personalizadas y procesar las ediciones propuestas utilizando el primer código que mostré para verificar si hubo un cambio y luego simplemente actualizar la publicación. El comentario en sí tiene un valor con una clave de
comment_post_ID
, por lo que identificar el ID de las publicaciones editadas es sencillo.Nota final
Me gustaría ver el complemento final también. Por favor vincúlelo aquí :)
fuente
wp_text_diff()
para la comparación real. Votos a favor de las otras respuestas.Mi idea es algo simple.
Puede hacer un
Edit Suggestion
enlace en la parte inferior de las publicaciones que tenga una plantilla definida personalizada, en la que use un cuadro de texto (tal vez con un editor) que esté vinculado a una taxonomía personalizada con el valor predeterminado depost content
.Cualquier cambio a
content
se comparará conoriginal post content
después de enviar (como Borrador) e ingresarCAPTCHA code
con algoritmos Diff como el paquete PHP inline-diff o el paquete Text-Diff PEAR o, alternativamente, usar una función PHP de acuerdo con esto para textos no demasiado largos con combinación de CSS.Luego, guardando los valores en 3 Meta Boxes personalizados (en la página de agregar / editar back-end de esa taxonomía) que muestran
y guardar
Post ID
tal vez con unaupdate_option()
función para su uso posterior.Después de leer la versión editada y la aceptación por parte del administrador, esa publicación será reemplazada por la original a medida que codificó en functions.php.
fuente
Bueno, esto es bastante complicado, una respuesta adecuada tomaría un tiempo considerable para escribir. Así que esta no es una respuesta real, solo algunos pensamientos ...
El uso de WordPress integrado a
wp_update_post
través de ajax le daría el historial de revisiones necesario, pero no la capacidad necesaria para aprobar las ediciones.La creación de borradores a partir de ediciones no es posible de forma predeterminada, pero se ha discutido aquí. ¿Hay alguna forma de redactar una revisión de una página o publicación publicada? ¿Qué soluciones alternativas has usado?
Puede intentar usar el Editor frontal, pero no tendrá control sobre las ediciones que se publiquen, así que intente mezclarlo con otro complemento como Revisionary que permita ediciones basadas en permisos, no tengo idea de si funcionarán juntas.
Si no lo hacen, tendrá que hackear un complemento basado en los 2 complementos anteriores o escribir algo desde cero.
Mi enfoque desde cero sería tener un botón que vaya a otra página que muestre el contenido / datos de la publicación usando JSON , que es más fácil de usar cuando se usan editores Ajax y WYSIWYG. El botón Guardar se publicaría como un borrador en lugar de publicar y de esa manera usted tendría control sobre las ediciones (vea la discusión anterior de WPSE sobre cómo lograr esto, es bastante desalentador).
Hay complicaciones adicionales al hacer esto, como desinfección, codificación, spam, manejo de medios, campos personalizados, marcas de tiempo, memoria, etc. La buena noticia es que WordPress ya tiene un sistema de revisión al que puede conectarse y una capacidad decente para manejar múltiples editores. .
PD. Esta es una buena idea para un complemento.
fuente