我開發了一個WordPress插件,需要在保存自定義帖子類型的帖子時執行額外的處理。WordPress的「save_post」問題動作
最合理的解決方案是利用「save_post」動作。被調用時,動作處理程序可以創建或更新自定義表中的數據庫記錄(取決於是否單擊「創建發佈」或「更新發布」)。
我已經實現了這一點,它似乎是完美的工作,但我想解決一個小問題。當第一次加載「創建發佈」頁面時(即,在輸入任何用戶輸入之前以及在按下提交新/更改按鈕之前),似乎也會觸發「save_post」。
這意味着,自定義數據庫表是越來越充滿了一個空白行對於保存每個新的崗位。這也意味着每次加載發佈頁面時都會有一個空白行。
這裏是我的「save_post」處理器的簡化版本:
function do_save_post($post_id) {
if (get_post_type($post_id) !== 'mycustomtype')
return $post_id;
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
return $post_id;
if (!current_user_can('edit_mycustomtype'))
return $post_id;
echo 'This happens when selecting "Add New" from admin sidebar.';
echo 'Even though post has not been saved or updated.';
echo 'This should only happen when button on right of editor is clicked.';
}
我怎樣才能檢測是否崗位實際上是被保存?
的是當它失敗返回$ POST_ID點? – helgatheviking 2012-01-08 13:53:51
@helgatheviking它允許其他鉤子使用正確的'$ post_id'執行它們的處理。我的鉤子沒有失敗,它只是想控制何時進行處理。 '$ post_id'通過返回從每個鉤子傳遞給每個鉤子。 – 2012-01-08 14:15:53
@lea_hayes感謝您的回覆!我不知道$ post_id是從鉤子傳遞過來的。如果我不返回它,我還沒有注意到有任何代碼停滯的問題。 – helgatheviking 2012-01-08 14:26:40