Skip to content

艾瑞克的沼澤 Posts

【第 26 天】我們會用到哪些 WordPress Hooks?

今天我們來研究看看,WordPress 核心提供了哪些 hooks 可以拿來用?以及有些時候,我們想對其他外掛做點事情,該怎麼做?

 

WordPress 核心提供的 hook

WordPress 提供了我們兩個清單,分別是 filter hooks 和 action hooks 了!接著,我們還是找到woocommerce_checkout_update_order_metas :

Filter Reference
Action Reference

我們可以很輕易快速的直接來這兩個清單找到我們可以使用的 hook 。舉例來說,我希望每次發文的時候送出 notify 通知,那我可能可以找到一個 action hook 叫做 save_post()

他的下面會附上一段簡介,簡介如下:

Runs whenever a post or page is created or updated, which could be from an import, post/page edit form, xmlrpc, or post by email. Action function arguments: post ID and post object. Runs after the data is saved to the database. Note that post ID may reference a post revision and not the last saved post. Use wp_is_post_revision() to get the ID of the real post.

簡單來說就是,每當創建或更新文章或頁面的時候會運行。太好了,這就是我想找的 hook 。那我們就可以在這個 hook 上面掛上我們的 callback function 。

其他外掛提供的 hook

當然了,有的外掛也會提供 hook 給我們使用,所以我們也可以透過這種方式去插入我們自定義的 callback function 。沒錯!WordPress 的世界就是這麼方便。

舉例來說,我今天想要在 woocommerce 上面做訂單通知。我們可以試著上去外掛的官網上面找文件,於是我們找到了這份文件:Action and Filter Hook Reference,翻一翻可以找到 woocommerce_checkout_update_order_meta(),不過打開文件後,確實有點難理解要怎麼用它。

所以我這邊想分享一個網站: hookr.io

進去後,我們可以直接打開外掛列表頁,這裡記錄了許許多多在 WordPress 上面提供的外掛,假設我們點了 Woocommerce,裡面就會有這個外掛所提供的所有filter hooks 和 action hooks 了!接著,我們找到 woocommerce_checkout_update_order_meta()。他就會告訴我們 description、他會用到哪些 parameters ,以及他的使用方法。整個很方便好用!

明天我們就要來把這個 hook 放上我們自己定義的 callback function 囉!

【第 25 天】在 WordPress 後台取得 LINE Notify token

這幾天實在太忙了,所以文章有點沒時間寫。但是鐵人賽都快結束了,不可以輕易放棄啊!!!

在取得 LINE Notify token 之前,還記得我們在第 22 天的時候說過,使用者的瀏覽器在登入授權後,會透過 redirect_uri 所設定的網址發出 HTTP POST 要求嗎?所以我們要先來搞定取得 LINE 的 POST method 。

 

這部分要感謝也在參加鐵人賽的 Eric 桓桓 為我點通訣竅。

WordPress 接受 post method 的方法非常簡單,我們只需要在外掛的目錄下建立 get_post.php 就可以處理 post method 了,大概是這樣。

<?php 
    require_once('wp-load.php'); // add wordpress functionality
    $post = $_POST;

    if ( $something ) // security check
    // do something...
?>

接著透過 yourdomain.com/plugin_name/get_posts.php ,就可以發送 post 請求。這也意味著我們要去 LINE Notify 修改一下我們的 redirect_uri 到 https://yourdomain.com/plugin_name/get_posts.php。如此一來我們就可以取得一組 token ,所以接著我們需要把它存下來。

如此一來,我們就會有一組 token 清單在資料庫中,以後要發送 Notify 的時候,就找這個清單就可以囉!

至於實作的部分呢,小弟我還在被追殺中....我假日會補啦QQ

【第 24 天】在 WordPress 後台建立表單填入 Client ID 和 Client Secret

在 【第 22 天】開一個 LINE OA 這篇文章中,我提到,我們必須先拿著 Client ID 和 Client Secret 去取得 code ,再拿這個 code 去換 token 。 所以這個流程看來,我們的第一個步驟,應該先提供一個表單給後台使用者,可以去填入他的 Client ID 和 Client Secret 按下去後會進入 LINE 提供的授權頁面,然後會換回一個 code ,然後我們再拿著這個 code 去存在 WordPress 中。 然後這邊開始我們要開始寫 code 了 然後我被叫去修 bug 了…晚上再來補文QQ

【第 23 天】初始化一個 WordPress 外掛

終於要進入這次參賽的最後尾聲了。接著幾天又要開始捲起袖子寫 code 囉! 我們在第三天有講到如何建立第一個 WordPress 外掛 ,可以回去複習一下:【第 03 天】第一個 WordPress 外掛。 看來,我們需要先想一個好的名稱。 好的外掛名稱 根據官方的建議,外掛的名稱應該反映你和外掛的獨特性。 所以,我們在想名字的時候,必須確保沒有侵犯商標或與其他的產品名稱產生衝突。例如,我們想做一個外掛推播 LINE 通知,但是這並不是 LINE 官方的外掛,我們就就不應該命名這個外掛為 LINE’s Notify ,命名為 Notify for LINE 會更好一點。 因此,想出一個好名稱不是一件容易的事情。 建立外掛目錄 假設,我們就叫這個外掛 Notify…