J'aime l'idée de permettre à n'importe quel utilisateur de mon site Web de suggérer des modifications à une page. Tout comme le système d'édition sur Stack Exchange, mais différent en ce que n'importe qui devrait pouvoir éditer, pas seulement les utilisateurs enregistrés. Toutes les modifications passeraient par un processus d'approbation.
Comment pourrais-je mettre cela en œuvre?
plugins
user-access
Patrick Klug
la source
la source
Réponses:
Diff le contenu du post, le titre et l'auteur
Comme je devais faire quelque chose de connexe il y a un mois, voici le moyen le plus simple et le plus à l'épreuve du temps (que je pourrais bien) pour vérifier s'il y a eu une modification du contenu ou du titre ou si l'auteur a changé:
Pour expliquer brièvement mon scénario: je récupérais des publications à distance via une API distante. Ensuite, je suis retourné le
global $post
, au cours d'une seule boucle de publication, contenant soit les données d'origine, soit les nouvelles données. De cette façon, je me suis déplacé en définissant toutes les autres valeurs de publication dont je n'avais pas besoin pour vérifier les modifications.Proposer la modification
Le fait principal que l'on doit garder à l'esprit lors de la recherche d'un endroit où une copie-édition du contenu de la publication pourrait être (temporairement) enregistrée est que le contenu est une entrée db de
longtext
. L'endroit où l'on souhaite enregistrer la modification suggérée doit donc répondre à cette exigence. Les commentaires font ça.Ensuite, il y a le fait qu'ils offrent une API pour les placer bien dans une boucle, de sorte qu'il s'intègre facilement, est hautement personnalisable et peut être rapidement configuré. Enfin, la plupart des thèmes sont déjà livrés avec des commentaires intégrés, il est donc facile de se superposer au système et de se connecter à presque tous les thèmes disponibles.
Je suggère de simplement (soit) étendre ou modifier le formulaire de commentaire. Utilisez les éléments suivants ou ajoutez des champs supplémentaires avec un rappel accroché à
comment_form_default_fields
.J'ai donc ajouté un
hidden
champ pourcomment_approved
avec une valeur de0
pour le mettre dans la file d'attente. Je ne sais pas si cela fonctionnera ou si cette valeur (principale) est en fait des métadonnées de commentaire et doit être ajoutée en utilisantadd_comment_meta()
lors de l'enregistrement. Sinon, vous pouvez utiliser quelque chose le long des lignes de code suivantesAffichage des commentaires du côté administrateur
Ici, j'irais avec une extension de classe simple et une page d'administration personnalisée:
Plus d'informations peuvent être trouvées sur WPEngineer .
Approuver les modifications
Vous pouvez ensuite ajouter des actions personnalisées et traiter les modifications proposées à l'aide du premier code que j'ai montré pour vérifier s'il y a eu un changement, puis simplement mettre à jour la publication. Le commentaire lui-même contient une valeur avec une clé de
comment_post_ID
, donc l'identification de l'ID des articles modifiés est simple.Note finale
J'aimerais également voir le plugin final. Veuillez le lier ici :)
la source
wp_text_diff()
pour la comparaison réelle. Upvotes pour les autres réponses.Mon idée est quelque chose de simple.
Vous pouvez créer un
Edit Suggestion
lien au bas des publications qui a un modèle défini personnalisé, dans lequel utiliser une zone de texte (peut-être avec un éditeur) qui est liée à une taxonomie personnalisée avec la valeur par défaut depost content
.Toutes les modifications apportées
content
seront comparées àoriginal post content
après la soumission (en tant que brouillon) et la saisieCAPTCHA code
avec des algorithmes Diff comme le package PHP en ligne-diff ou le package PEAR Text-Diff ou en utilisant une fonction PHP conformément à cela pour les textes pas trop longs avec une combinaison de CSS.Ensuite, en enregistrant les valeurs dans 3 Meta Box personnalisées (dans cette page d'ajout / modification de back-end de taxonomie) qui affichent
et enregistrer
Post ID
peut-être avec uneupdate_option()
fonction pour une utilisation ultérieure.Après avoir lu la version modifiée et accepté par l'administrateur, ce message sera remplacé par celui d'origine comme vous l'avez codé dans functions.php.
la source
Eh bien, c'est assez compliqué, une bonne réponse prendrait beaucoup de temps à écrire. Donc ce n'est pas une vraie réponse juste quelques réflexions ..
L'utilisation de WordPress intégré
wp_update_post
via ajax vous donnerait l'historique des révisions nécessaires, mais pas la capacité nécessaire pour approuver les modifications.La création de brouillons à partir de modifications n'est pas possible par défaut mais a été discutée ici, Existe - t-il un moyen de rédiger une révision d'une page ou d'un article publié? Quelles solutions de contournement avez-vous utilisées?
Vous pouvez essayer d'utiliser l' éditeur frontal mais vous n'aurez aucun contrôle sur les modifications publiées, alors essayez de les écraser avec un autre plugin comme Revisionary qui autorise les modifications basées sur les autorisations, je ne sais pas si elles fonctionneront ensemble.
S'ils ne le font pas, vous devrez pirater un plugin basé sur les 2 plugins ci-dessus ou écrire quelque chose à partir de zéro.
Mon approche de base serait d'avoir un bouton qui va à une autre page qui génère le contenu / les données de publication à l'aide de JSON , ce qui est plus facile à travailler lorsque vous utilisez les éditeurs Ajax et WYSIWYG. Le bouton Enregistrer serait publié sous forme de brouillon au lieu de publier et de cette façon, vous auriez le contrôle sur les modifications (voir ci-dessus la discussion WPSE sur la façon d'accomplir cela, c'est plutôt intimidant).
Il y a des complications supplémentaires lors de cette opération telles que la désinfection, l'encodage, le spam, la gestion des médias, les champs personnalisés, les horodatages, la mémoire, etc. La bonne nouvelle est que wordpress a déjà un système de révision auquel vous pouvez vous connecter et une capacité décente de gérer plusieurs éditeurs .
ps. C'est une bonne idée pour un plugin.
la source