我正在开发一个简单的内容工作流系统,其中提交一个项目以供审查,并在审查后发布。我不能使用发布状态,因为旧版本必须在新版本处于审核中时可见。
我真的不想创建自己的表来存储这些信息,所以我正在考虑使用修订系统添加一个修订,它的帖子状态标记为审查中。然后我会在审查面板/编辑页面中显示它,但向用户显示的仍然是旧的。一旦审核被成功接受,它将取代旧的。
问题是我找不到任何关于如何将更新的帖子保存为评论的信息;有谁知道如何做到这一点?
谢谢
事实证明,这个 cookie 很难破解,但我学到了很多东西,我觉得我应该分享给任何其他想要复制这个功能的人。
首先,您需要指定当前的帖子保存是更新还是发布。Aka 是新的帖子,还是不是?我想到了一个聪明的小技巧来检查这个:
$isNewPost = $data['post_date_gmt'] == $data['post_modified_gmt'];
我使用的第一个钩子是wp_insert_post_data
钩子,它在 post 对象被插入/更新到数据库之前被调用。这个钩子很棒,因为它允许您返回任何取消插入数据库的内容。当然,您并不总是想这样做,如果帖子是新的,那么我们应该将其添加到数据库中,因此在审核时会有一个占位符,但我们不只是添加它,而是将帖子状态设置为草稿。如果它是一个更新,那么我们什么都不传回,只是在那里添加评论。
现在,如果帖子是新的,我们也需要钩入post_updated
钩子,因为只有这样我们才有实际的数据库记录,我将传入的 ID 保存到wp_insert_post_data
记录中并使用它来查找正确的post_saved
事件,然后添加评论帖子。
Wordpress 有点奇怪,每当访问一个新的帖子屏幕时,就会将一个帖子添加到数据库中,类型为自动草稿,然后保存在另一个帖子中的几秒钟编辑,一个修订(如果帖子类型支持它,内置的),这也会触发所有后保存事件。我遇到的另一个问题是保存评论帖子,因为它会触发post_saved
andwp_insert_post_data
钩子,导致无限循环。
还有一些其他有趣的问题,如果有人好奇,我会非常乐意提供帮助,遗憾的是代码是专有的,因为我是为一家公司编写的,也许我可以说服他们在某个时候开源它(大多数可能不会,因为我们与客户签订了有关隐私的合同)。
我可能会绘制工作流程,因为我认为它足够复杂以保证它;它可能会帮助其他人,这绝对不是一个小问题。
如果您正在处理帖子元(相信我,他们会希望您这样做,即使他们最初说不用担心),我会给出一个建议)使评论帖子与帖子的帖子类型相同审查,并使其成为一个孩子。将原始父级以及所需的任何其他信息保存在 post meta 中。这样您就不必处理重建编辑页面。