Eu gosto da ideia de permitir que qualquer usuário do meu site sugira edições em uma página. Muito parecido com o sistema de edição no Stack Exchange, mas diferente porque qualquer pessoa deve poder editar, não apenas usuários registrados. Todas as edições passariam por um processo de aprovação.
Como eu poderia implementar isso?
plugins
user-access
Patrick Klug
fonte
fonte
Respostas:
Difere o conteúdo, o título e o autor da postagem
Como tive que fazer algo relacionado há um mês, aqui está a maneira mais fácil e mais futura de provar (que eu poderia multar) para verificar se há uma alteração feita no conteúdo ou título ou se o autor mudou:
Para explicar brevemente meu cenário: eu estava buscando postagens de um local remoto por meio de uma API remota. Depois, retornei o
global $post
, durante um único ciclo de postagem, contendo os dados originais ou os novos dados. Dessa maneira, mudei para definir todos os outros valores de postagem que não precisavam verificar alterações.Propor a edição
O principal fato que se deve ter em mente ao pesquisar um local onde uma cópia-edição do conteúdo da postagem pode ser salva (temporariamente) é que o conteúdo é uma entrada db de
longtext
. Portanto, o local em que se deseja salvar a edição sugerida deve atender a esse requisito. Comentários fazem isso.Depois, há o fato agradável de que eles oferecem uma API para colocá-los perfeitamente em um loop, para que se integre sem problemas, seja altamente personalizável e possa ser configurada rapidamente. Por último, mas não menos importante, a maioria dos temas já vem com comentários integrados, por isso é fácil pegar carona no sistema e conectar-se a praticamente qualquer tema disponível.
Sugiro apenas estender ou alterar o formulário de comentários. Use o seguinte ou adicione campos adicionais com um retorno de chamada conectado
comment_form_default_fields
.Então, eu adicionei um
hidden
campo paracomment_approved
com um valor de0
para defini-lo na fila. Não tenho certeza se isso vai funcionar ou se esse valor (principal) é realmente comentar metadados e precisa ser adicionado usandoadd_comment_meta()
durante o salvamento. Caso contrário, você pode usar algo ao longo das seguintes linhas de códigoExibindo os comentários no lado do administrador
Aqui eu iria com uma extensão de classe simples e uma página de administrador personalizada:
Mais informações podem ser encontradas no WPEngineer .
Aprovando edições
Você pode adicionar ações personalizadas e processar as edições propostas usando o primeiro código que mostrei para verificar se houve uma alteração e simplesmente atualizar a postagem. O próprio comentário contém um valor com uma chave de
comment_post_ID
, portanto, identificar o ID das postagens editadas é direto.Nota final
Eu gostaria de ver o plugin final também. Por favor, vincule-o aqui :)
fonte
wp_text_diff()
a comparação real. Votos positivos para as outras respostas.Minha ideia é algo simples.
Você pode criar um
Edit Suggestion
link na parte inferior das postagens que possui um modelo definido personalizado, em que usa uma caixa de texto (talvez com um editor) vinculada a uma taxonomia personalizada com o valor padrão depost content
.Quaisquer alterações
content
serão comparadasoriginal post content
após o envio (como Rascunho) e a EntradaCAPTCHA code
com Diff, como o pacote PHP inline-diff ou o Pacote Text-Diff PEAR ou, alternativamente, o uso de uma função PHP de acordo com isso para textos não muito longos com combinação de CSS.Em seguida, salvando os valores em três meta boxes personalizados (na página de adição / edição de back-end de taxonomia) que mostram
e salvando
Post ID
talvez com umaupdate_option()
função para uso posterior.Depois de ler a versão editada e a aceitação pelo administrador, essa postagem será substituída pela original, conforme você codificou em functions.php.
fonte
Bem, isso é bastante complicado, uma resposta adequada levaria um tempo considerável para ser escrita. Portanto, esta não é uma resposta real, apenas alguns pensamentos ..
Usando o WordPress construído
wp_update_post
via ajax forneceria o histórico de revisões necessário, mas não a capacidade necessária para aprovar edições.Criar rascunhos a partir de edições não é possível por padrão, mas foi discutido aqui, Existe alguma maneira de rascunhar uma revisão de uma página ou publicação publicada? Quais soluções alternativas você usou?
Você pode tentar usar o Front-end Editor, mas não terá controle sobre as edições publicadas, então tente mash-lo com outro plug-in como o Revisionary. que permite edições baseadas em permissões, não tenho idéia se elas funcionarão juntas.
Caso contrário, você precisará hackear um plug-in com base nos 2 plug-ins acima ou escrever algo do zero.
Minha abordagem inicial seria ter um botão que vá para outra página que produza o conteúdo / dados da postagem usando JSON , mais fácil de trabalhar ao usar os editores Ajax e WYSIWYG. O botão salvar seria publicado como rascunho em vez de publicado e, dessa forma, você teria controle sobre as edições (veja a discussão acima da WPSE sobre como fazer isso, é bastante assustador).
Existem complicações adicionais ao fazer isso, como higienização, codificação, spam, manipulação de mídia, campos personalizados, carimbos de data e hora, memória, etc. A boa notícia é que o wordpress já possui um sistema de revisão ao qual você pode se conectar e uma capacidade decente de lidar com vários editores .
ps. Esta é uma boa ideia para um plugin.
fonte