修復 trackback 功能
敝小站的 trackback 爛很久了,趁著今天放假有空[1],追了一下程式,發現原來是啟用「Did You Pass Math?」時安裝的 Did you pass math 這個 plug-in 的問題。
簡單講,這個問題出在於,Did you pass math 乃是註冊 comment_post 這個 action,以進行驗證數學的答案的工作。但 trackback/pingback 時,也都會進行 comment_post,因此就被 Did you pass math 擋了下來,讓 trackback/pingback 失敗。
事實上,每一種 spam checking 的 plug-in,應該都會碰到這個問題。解法很簡單,就是偵測是否此次 comment_post 是否為 trackback/pingback,如果是,就直接通過,否則就進行數學答案的驗證。
但是要怎麼偵測此次 comment_post 是否為 trackback/pingback 呢?我不是 wordpress 達人,所以只好偷看一下 Captcha! 的程式碼,原來關鍵在於,也註冊 pingback_post 與 trackback_post 這兩個 actions,於處理此兩個 actions 時記錄於 $this->is_trackback,然後在處理 comment_post 時,若是 $this->is_trackback 的話,就直接通過。
然後,一如往常,在程式改好,測得很高興的時候,發現 Did you pass math 有了新版,且已經把這個問題,以及一些其他問題都解掉了。所以,在此就不列出我的 patch,請大家直接服用新版 Did you pass math。XD
- 敝公司常常跟別人不一樣,每年都會多幾天別人上班我們放假的日子。 ↩



Post a Comment