Skip to content

Month: September 2020

【第 18 天】WordPress 操作資料庫

我們寫外掛的時候,會要存資料到資料庫去,一般來說我們就存在 wp_options 表中,可以參考我在第十天分享的內容:如何修改 WordPress 的後台設置選項。或者就是可以存到 postmeta 或 usermeta 表中,可以參考第十一天的文章:如何管理 WordPress metadata。 不過還是會有些時候,這些不能滿足我們的需求,那我們就得需要單獨操作資料表了。這篇文章會來講講如何在寫外掛的時候去操作資料表。 創建資料表 一般在寫外掛時,創建資料表有如下三個步驟: 寫一個 PHP 函式負責建立資料表。 外掛啟動的時候去呼叫這個函式。 一個 PHP 函式負責建立資料表 我們定義這個函式叫做 eric_crate_table() ,會長成這樣: function eric_crate_table() {…

【第 17 天】WP-Cron

Cron 是基於時間的工作排程系統,而 WP-Cron 是 WordPress 中處理工作的基於時間的工作排程系。WordPress 的有很多的核心功能,例如說:檢查更新、排程發布文章這類的功能,都是使用了 WP-Cron。 WP-Cron 的工作原理是,在頁面被讀取的時候,才會開始檢查工作排程列表以查看需要運行的工作。 也因此 WP-Cron 和 Unix 系統的 Cron 運行方式是不一樣的。舉例:如果我們安排了一個工作在早上 10:00 運行,而在這之前都沒有發生任何頁面加載,則該排程也就都不會運行。 為什麼使用 WP-Cron 那為什麼我們要使用 WP-Cron 呢? 因為,很多虛擬主機不允許用戶訪問系統…

【第 16 天】JavaScript、Ajax 和 jQuery 應用到 WordPress

不知不覺也玩了 WordPress 的各種 hook 和 function 半個月了,也差不多剩下幾個章節就要告一個段落了,接著就會開始實際開發一個外掛,並且記錄下來。 那們我們今天就要來看看 JavaScript、Ajax 和 jQuery 如何應用到 WordPress 上面。至於 JavaScript、Ajax 和 jQuery 是什麼?不是我這次的重點,有興趣的朋友,可以自行去 Google 一下,會很多資料可以參考。 PHP 後端和插入前端文件 我們目的是為了在伺服器端可以處理 Ajax 請求,我們來先想想邏輯。…

【第 15 天】WordPress 的 HTTP API

HTTP 是一種用於分佈式、協作式和超媒體訊息系統的應用層協定,有興趣的可以參考維基百科對於 HTTP 的介紹,這裡就不贅述了 寫過 PHP 的朋友,應該知道有很多方法可以發送 HTTP 請求。而 WordPress 也提供了許多好用的 HTTP API 讓我們可以對第三方發送 HTTP 請求。 從 API 獲取數據 因為 GitHub 提供了一個很完整的 API ,所以我們就先從打 GitHub 的 API…

【第 14 天】WordPress 使用者角色

在 WordPress 的世界中,每個使用者至少有一個使用者名、密碼和電子郵件。一旦創建了使用者帳號,使用者就可的登錄後台來使用 WordPress 的功能。而 WordPress 使用者的資料,會被存在 wp_user 資料表中。每個使用者都會被分配一個角色,每個角色都會有一些能力。所以,我們也可以自定義能力,我們可以利用角色來限制使用者是否可以執行哪些操作。 操作 WordPress 使用者 新增使用者 我們可以使用 wp_create_user() 或 wp_insert_user() 這兩個函式來辦到。 那這兩個差別在哪裡呢?wp_create_user() 是拿一個使用者名稱、密碼和電子郵件作為參數來建立新的使用者,而 wp_insert_user() 則是可以接受拿描述使用者及和他的屬性組成的陣列或對象來建立使用者。 用 wp_create_user() 來建立 wp_create_user( string $username, string…

【第 13 天】自定義 WordPress 分類方法

在 WordPress 的世界中,我們可以註冊自定義分類法,分類的方法會被存儲在 term_taxonomy 資料表中。分類方法中有一些分類項目,這些項目則會被存儲在 wp_terms 資料表中。什麼意思呢?我們舉個例,名為 程式設計 的分類方法底下會有多個分類項目,例如說:PHP 和 Python ,大概就是這種關係。 所以接著,我們會來學習怎麼註冊一個自定義的分類方法,以及如何從我們的資料庫中去取得自定義的分類方法內容,然後顯示給用戶。 使用自定義分類法 自定義分類方法 WordPress 預設的分類方法有 分類目錄 和 標籤,在很多時候可能不能滿足我們的需求。所以這個時候,我們就會需要創建自定義分類方法。自定義分類方法通常和自定義文章類型一起使用,為我們自定義的某種內容按照我們自定義的條件分類。 為什麼使用自定義分類方法 有些人可能會好奇,我們什麼時候使用需要分類方法來組織我們在 WordPress 的內容? 假設有一個客戶是美髮店,他需要我們幫他使用 WordPress 創建一個網站,用來展示他的作品。 為了避免 作品集 這種類型的內容和其他內容混在一起,引起管理上的混亂,我們可能就會需要創建一個自定義文章類型來存儲這個設計師的作品。這時候,我們需要創建一個名為 髮型 的分類方法來把 長髮 和 中長髮 這兩種不同的髮型分開。獨立出來後,我們的自定義分類方法還可以在 WordPress 後台擁有自己獨立的選單,來方便我們去做管理,整個很方便! 課程分類方法 剛剛說了很多,所以接著我們就直接來實作看看 我們到寫文章的地方,可以看到預設有 分類 和 標籤 這兩種分類方法。 所以我們先來用 init action hook…

【第 12 天】自定義 WordPress 文章類型

我們有時候會想自己定義的文章的類型,所以接著,我們就來看看如何註冊自定義文章類型,以及如何從資料庫中取得自定義文章類型內容並且把這些內容顯示給使用者。 自定義文章類型 WordPress 預設有五種文章類型,分別是 post, page, attachment, revision 和 menu。我們有時候,可能需要創建自定義文章類型,比如說:購物網站的商品、遊戲網站的遊戲。 註冊自定義文章類型 因此,我們可以使用 register_post_type() 函式來註冊一個自定義的文章類型。註冊之後,WordPress 會自動幫我們添加一個新文章類型菜單到 wp_psots 資料表中,我們就可以通過這個分類來創建文章。下面做個簡單的示範: function eric_custom_post_type() { register_post_type( ‘eric_type’, [ ‘labels’ => [ ‘name’…

【第 11 天】如何管理 WordPress metadata

metadata 就是關於資料的資料。簡單來說就是我們創建了類型為商品的自定義文章類型,其中價格就是 metadata 的一種,這個字串就會被存儲在 postmeta 文章 metadata 中。 WordPress 的主要資料(文章、評論、用戶、分類)和他們 metadata 的關係是一對多,也就是一個主要資料可以有很多 metadata 。所以,我們可以在 metadata 中存儲很多附加資訊。 管理文章 metadata 新增 metadata 我們可以使用 add_post_meta() 函式添加 metadata ,該函式接受一個 post_id、一個 meta_key、一個…

【第 10 天】如何修改 WordPress 的後台設置選項

WordPress 為了使管理介面更容易被建立,並且確保安全和一致性 提供了兩個核心 API 給開發者使用,分別是設置 API 和選項 API。設置 API 被用來提供了一種創建選單和管理選單資料。選項 API 則是我們提供一種簡單的 key-value 方式來管理設置資料。 設置 API 為什麼使用設置 API WordPress 2.7 之後增加的設置 API 可以讓我們半自動地管理含有設置表單的後台頁面,讓我們自定義設置頁面。讓我們可以輕輕鬆鬆的開發設置頁面。也就是說,我們使用 API 生成介面的元素後,可以確保我們的自定義設置頁面和WordPress…

【第 09 天】WordPress 的 Shortcode

為了安全,在 WordPress 的世界中,是禁止在內容中運行 PHP 程式碼的,不過有時候我們還是希望說可以動態新增一些內容,所以在 WordPress 2.5 版中引入了 shortcode。 shortcode 是用讓我們在不插入 PHP 程式碼的情況下,動態新增內容的一段 code,對文章動態的新增相簿、播放影片、加入表單,或者實現更多自定義的功能。 WordPress 本身就內建了以下幾個 shortcode: caption – 為圖片或影片添加說明 gallery – 顯示相簿 audio –…