2013-02-13 34 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(相信我,他們會讓你,即使他們最初說不擔心它)使審查發佈相同的職位類型作爲正在審查的職位,並使其成爲一個孩子。將原始父級保存在後期元中,以及所需的任何其他信息。這樣你就不必處理重建編輯頁面。