Skip to content

Category: 2020鐵人賽

【第 20 天】WordPress 外掛開發者工具

今天也不寫 code ,來分享在 WordPress 的世界裡,提供了各式各樣的開發外掛,可以協助我們開發 WordPress 的時候,更正確的開發外掛和診斷問題。 Debug Bar 這個外掛會在 WordPress 上面的管理工具 bar 添加一個新的選單,用來顯示 WordPress 查詢、查詢時間這類的資訊,當 WP_DEBUG 設為 true 時,還會協助我們追蹤 PHP 警告和通知。而 SAVEQUERIES 也被設置為啟用時,SQL 查詢也會被追蹤並顯示。 Query Monitor 我們可以在通過這個外掛查看有關資料庫查詢、hook、函式、HTTP 請求這類的狀況和請求。 WP Crontrol…

【第 19 天】上架第一個外掛到 WordPress.org

今天我們不寫任何的 code ,今天我們就很單純的聊聊如何上架一個外掛到 WordPress.org 。 WordPress.org 為每一個想要開發外掛的開發者免費提供託管的服務,通過這個服務,我們可以: 監控外掛被下載的次數 取得外掛各個版本的使用統計 得到使用者的回饋和評價 WordPress.org 提供了一個 WordPress 外掛的 API,供開發者監控外掛的統計數據。 規劃外掛 1、盡可能多的測試 我們要確保外掛已經得到了盡可能多的測試,測試涵蓋了各種情況。 2、選擇一個好名稱 選擇名字的時候,確保沒有侵犯商標或與其他的產品名稱產生衝突。例如,如果你不在 Facebook 工作,你就不應該命名你的外掛為 Facebook’s Dancing Squirrels,命名為 Dancing Squirrels…

【第 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、一個…