Php Wordpress内容工作流

Php Wordpress内容工作流,php,wordpress,plugins,Php,Wordpress,Plugins,我正在开发一个简单的内容工作流系统,在这个系统中,一个项目被提交以供审核,审核后发布。我不能使用post状态,因为旧版本必须在审查新版本时可见 我真的不想创建自己的表来存储这些信息,所以我考虑使用修订系统来添加一个修订,该修订标记为“审阅中”的post状态。然后,我会在“审阅面板/编辑”页面中显示,但显示给用户的仍然是旧页面。一旦审查被成功接受,它将取代旧的审查 问题是我找不到任何关于如何将更新后的帖子保存为评论的信息;有人知道如何才能做到这一点吗 谢谢这是一个很难破解的曲奇,但我学到了很多东西

我正在开发一个简单的内容工作流系统,在这个系统中,一个项目被提交以供审核,审核后发布。我不能使用post状态,因为旧版本必须在审查新版本时可见

我真的不想创建自己的表来存储这些信息,所以我考虑使用修订系统来添加一个修订,该修订标记为“审阅中”的post状态。然后,我会在“审阅面板/编辑”页面中显示,但显示给用户的仍然是旧页面。一旦审查被成功接受,它将取代旧的审查

问题是我找不到任何关于如何将更新后的帖子保存为评论的信息;有人知道如何才能做到这一点吗


谢谢

这是一个很难破解的曲奇,但我学到了很多东西,我觉得我应该分享给任何想要复制这个功能的灵魂

首先,您需要指定当前发布保存是更新还是发布。这篇文章是新的吗?我想出了一个聪明的小把戏来验证这一点:

$isNewPost = $data['post_date_gmt'] == $data['post_modified_gmt'];
我使用的第一个钩子是
wp\u insert\u post\u data
hook,在将post对象插入/更新到数据库之前对其进行调用。这个钩子很棒,因为它允许您不返回任何取消对数据库的插入的内容。当然,您并不总是希望这样做,如果文章是新的,那么我们应该将其添加到数据库中,这样在审阅时会有一个占位符,但我们不只是将其添加,而是将文章状态设置为草稿。如果它是一个更新,那么我们什么也不传递,只在那里添加评论

现在,如果帖子是新的,我们还需要钩住
post\u updated
钩子,因为只有这样我们才有一个实际的DB记录,我将ID保存到
wp\u insert\u post\u data
记录中,并使用它找到正确的
post\u saved
事件,然后添加review post

Wordpress有点奇怪,每当访问一个新的帖子屏幕,一篇文章被添加到数据库中,类型为auto draft,然后在另一篇文章中保存几秒钟的编辑,一次修订(如果帖子类型支持它,内置类型支持它),这也会触发所有的帖子保存事件。我遇到的另一个问题是保存评论帖子,因为它会触发
post\u saved
wp\u insert\u post\u data
挂钩,导致无限循环

还有一些其他有趣的问题,如果有人好奇的话,我会非常乐意提供帮助,不幸的是,代码是我为一家公司编写的专有代码,也许我可以说服他们在某个时候开放源代码(但很可能不是,因为我们与客户签订了关于隐私的合同)

我可能会绘制工作流程图,因为我认为它足够复杂,足以保证它;这可能会帮助其他人,这绝对不是一个需要解决的小问题

我会给你一个建议,如果你在处理post meta(相信我,他们会希望你这样做,即使他们一开始说不用担心),让评论文章与它正在评论的文章类型相同,并让它成为一个孩子。在post meta中保存原始父级,以及所需的任何其他信息。这样,您就不必重新构建编辑页面。

检查是否有帮助。