2013-02-13 38 views
0

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

我真的不希望有创建自己的表来存储这些信息,所以我想使用的版本系统增加一个版本有什么标记在审查后的状态。然后我会在评论面板/编辑页面中显示,但向用户显示的那个仍然是旧的。一旦审查被成功接受,它会取代旧的。

的问题是,我无法找到如何保存后更新为审核的任何信息;有没有人有任何想法这可以实现?

感谢

+0

检查[编辑流程](http://wordpress.org/extend/plugins/edit-flow/)帮助。 – brasofilo 2013-02-14 23:29:13

回答

0

这一次竟然是一个大难题,但我学到了很多东西,我觉得我应该分享任何其他的灵魂找复制这种功能。

首先,你需要指定,如果当前后保存为更新或发布。又名是新的,还是不是?我想到了一个聪明的小把戏检查:

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

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

现在,如果帖子是新的,我们还需要挂钩到post_updated挂钩,因为只有当我们有实际的数据库记录时,才会将传入的记录保存到wp_insert_post_data记录中,并使用它查找纠正post_saved事件,然后添加评论帖子。

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

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

我可能关系图的工作流程,因为我认为这是十分复杂,需要它;这可能会帮助其他人,这绝对不是一个小问题。

我会给出一个建议的话,如果你正在处理后meta(相信我,他们会让你,即使他们最初说不担心它)使审查发布相同的职位类型作为正在审查的职位,并使其成为一个孩子。将原始父级保存在后期元中,以及所需的任何其他信息。这样你就不必处理重建编辑页面。