Wordpress内容工作流程

时间:2013-02-13 17:54:05

标签: php wordpress plugins

我正在开发一个简单的内容工作流程系统,其中一个项目被提交审核,并在审核后发布。我无法使用帖子状态,因为旧版本必须在新版本审核时可见。

我真的不想创建自己的表来存储这些信息,因此我正在考虑使用修订系统添加修订版本标记为审核中的帖子状态。然后我会在评论面板/编辑页面中显示,但显示给用户的那个仍然是旧的。成功接受审核后,它将取代旧审核。

问题是我找不到任何有关如何保存正在更新的帖子作为评论的信息;有没有人知道如何实现这一目标?

由于

1 个答案:

答案 0 :(得分:0)

这一个原本是一个难以破解的cookie,但我学到了很多我觉得应该为任何其他想要复制这个功能的灵魂分享的东西。

首先,您需要指定当前的帖子保存是更新还是发布。 Aka是新职位,还是没有?我想到了一个聪明的小技巧来检查这个:

$isNewPost = $data['post_date_gmt'] == $data['post_modified_gmt'];

我使用的第一个钩子是wp_insert_post_data钩子,它在post对象上被调用,然后在数据库中插入/更新。这个钩子很棒,因为它允许你返回任何取消插入数据库的东西。当然你并不总是想要这样做,如果帖子是新的,那么我们应该将它添加到数据库中,所以在审查时有一个占位符,但是我们将帖子状态设置为草稿而不是仅添加它。如果是更新,那么我们只会传回去,但在那里添加评论。

现在,如果帖子是新的,我们还需要挂钩post_updated钩子,因为只有这样我们才有一个实际的DB记录,我保存传入wp_insert_post_data的ID记录并使用它来查找正确的post_saved事件,然后添加评论帖。

Wordpress有点奇怪,每当访问一个新的帖子时,一个帖子被添加到数据库中,类型为自动草稿,然后在另一个帖子中保存几秒钟,一个修订版(如果帖子类型支持它,内置的那些),这也会触发所有后期保存事件。我遇到的另一个问题是保存审核帖子,因为它会触发post_savedwp_insert_post_data挂钩,导致无限循环。

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

我可能会绘制工作流程图,因为我认为它足够复杂以保证它;它可能对其他人有所帮助,这绝对不是一个微不足道的问题。

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