重新您的第一個「這項工作可以嗎?」問題 - 說實話,我不熟悉如何使用這個常量,也不知道如何/何時根據這個常數清除修訂版,所以我不能回答那個抱歉。我想你自己試試吧。
重新「另一種方式」,這是我該怎麼做。像這樣將撤出所有修訂特定職位ID:(包含在where子句中post_name like '{$id_of_post_being_saved}-revision%'
排除例如自動保存)
SELECT
ID
FROM
wp_posts
WHERE
post_parent = {$id_of_post_being_saved}
and
post_type = 'revision'
and
post_name like '{$id_of_post_being_saved}-revision%'
ORDER BY
id
。
然後可以(返回PHP)確定返回的修訂計數是否超過3,並按post_name
(例如「425-revision」,「425-revision-2」,「425-revision-3」等進行排序版本號爲425的修訂版)或post_date
以獲得「最早的」修訂版(無論邏輯是否滿足您的需求,基本上 - 我會推薦一些研究/實驗來確認邏輯實際上將隔離您之後的版本,儘管,因爲我沒有在實踐中自己做這個事情)
現在,這個代碼我有在實踐中使用,刪除所有職位的所有修訂所有舊版草稿在基於WP的b上發佈之前生成rochure式的網站):
DELETE
a,b,c
FROM
wp_posts a
LEFT JOIN wp_term_relationships b
ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c
ON (a.ID = c.post_id)
WHERE
a.post_type = 'revision'
但現在,你有,你要敲頭(第一個查詢具體職位的具體修訂後ID
),添加如下以上where子句要做到這一點:
and a.id = {$post_id_to_delete}
NB這可能都在一個巧妙的SQL語句來實現,例如,通過使用自第一個結果集和分組的第一個結果集的最大值之間,然後加入刪除基於這一點。 ..但個人而言,我會在PHP中處理「智能」,以便您可以更輕鬆地調整邏輯(例如,3個以上的修訂規則)米可在WP/PHP等
你也可以在這裏嘗試[Wordpress on Stackexchange](http://wordpress.stackexchange.com)。我可以挖掘一些SQL來清除我過去使用過的舊版本,也許這可以適合你想要做的事情? – Sepster 2013-02-23 16:30:37
嗯,可以工作。如果我可以幫忙的話,我寧願不直接使用SQL。我剛剛發現了'save_post'動作和'get_children'標籤,它會返回修訂版本。我想我可以用這兩種方法來解決問題。 – 2013-02-23 17:14:39