本篇文章更新時間:2020/04/21
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知或向一介資男的 LINE 社群反應。
如果本站內容對你有幫助,歡迎贊助支持


程式撰寫不怕寫錯語法,怕邏輯不正確。寫錯還有解譯器跳出錯誤提示訊息,但邏輯錯造成的問題就比較難解了!

尤其是把程式寫成無窮迴圈,執行時會在一瞬間把系統資源吃光,導致執行錯誤。

WordPress 中模組化了很多東西,從 Actions, Filters 的基礎 Hook 方法到 Shortcode 的短碼方法都是開發上必學的組合技。

先前是在 Shortcode 短碼上遇到:A 短碼中執行同樣的 A 短碼。一但 A 短碼觸發執行,網站就會資源耗盡而掛點。

所以如果要避免這問題發生,記得要加上 has_shortcode 方法來檢查!

而在 Actions 或 Filters 的這種使用情境就要注意是否有在方法內重新呼叫了自己。

剛好看到 How to use update_{$meta_type}_metadata filter to modify meta value 這篇討論,裡面有提到解法。

// Avoid infinite recursion:
remove_filter( current_filter(), __FUNCTION__ ); 

重複呼叫自己前,先把自己註冊的 Filter 給解註冊即可。 (寫成物件導向方法的不適用,需另外寫過解註冊的方法)

這篇是討論註冊了 update_post_meta 的 Filter 方法後,又希望在那方法裡使用 update_post_meta 更新 meta 值的做法。(有夠繞口)


Share:

作者: Chun

WordPress 社群貢獻者、開源社群推廣者。專注於 WordPress 外掛開發、網站效能最佳化、伺服器管理,以及 iDempiere 開源 ERP 導入與客製開發。曾參與 WordCamp Taipei 等社群活動,GitHub Arctic Code Vault Contributor。提供資訊顧問、WordPress 開發教學、主機最佳化與企業 ERP 整合服務。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon