跳至主要內容

月份: 2020 年 10 月

【第 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

由 Compete Themes 設計的 Author 佈景主題