iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 25
1
Software Development

PHP 大師之路 - 開源的技術淬練系列 第 25

Day 25 - WordPress 外掛設計實戰 (1) 初始化作業

WordPress 是市佔率最高的網站軟體,直至 2019 年高達 37% 的網站使用。自成一個完整的生態鏈。如果你有好的點子可以從 WordPress 外掛收費,那麼商機無限。但凡事總要起個頭。我來帶你瞭解,如何發佈一個 WordPress 外掛。

為外掛作品命名

第一步,先取個好名字。

這邊指的是外掛的名稱代碼 (slug)。為了避免名字已經被佔用,在外掛完成時,提交官方審核的結果是名字已經被使用,程式碼裡和外掛名稱的相關字串及目錄名稱還需要一一修改。

這種經驗筆者已經遇過幾次了。所以要先查一下目前外掛目錄中是否已經有人使用相同的命名。

WordPress 官方外掛目錄中,每一個外掛的網址會看起來像以下格式:

https://wordpress.org/plugins/{slug}

{slug} 指的是外掛的名稱代碼。只接受小寫的英文字母及 - 連接符號。

直接在瀏覽器的網址列中,修改 slug,假如會轉址到搜尋頁面,表示這個 slug 有兩種情況:

  • 不存在此 slug 的外掛。
  • 已存在此 slug 的外掛,但因安全性問題或者過久未更新,被官方強制下架。雖然已下架,但此 slug 仍然被佔用,不可再使用。

修改過後,如果是轉址到搜尋頁面,而非外掛介紹頁面,就先假設這個名稱是可以用的。

先試過幾筆和鐵人賽作品 PHP 套件 simple cache 一樣的名稱,例如 simple-cachewp-simple-cache,結果是外掛介紹頁面。這代表 slug 都已被使用了,所以決定先使用 cache-master 來試試,中文可以譯作「快取大師」不管是看起來,還是聽起來都蠻威猛的樣子 ^^"。

建立工作目錄

在本機端開發環境,架一個 WordPress 部落格,並在外掛目錄中建一個工作目錄。

(圖:筆者的 Window 環境,WordPress 裡的 plugin 目錄)

工作目錄的名稱就是上一步驟所提到的 slug。外掛的檔案都在這裡面。

由於 WordPress 的外掛伺服器採用的版本控制軟體是 Subversion,簡稱 SVN。在上圖中,會看到用 svn_ 為開頭的目錄,那是筆者用來上傳至 WordPress 的外掛伺服器用的。在每次修改完成準備要發版,就會把外掛檔案複製到上傳專用的目錄。

這個步驟,一共建立了兩個目錄:

  • 工作目錄:cache-master
  • 上傳用目錄:svn-cache-master

建立初始化檔案

WordPress 管理後台的外掛列表清單中,列出目前已啟用、未啟用的所有外掛。而我們要建立一個在 WordPress 管理後台的外掛列表清單中,也可以看到自己的外掛的資訊。

我們才剛剛建立一個工作目錄,裡面什麼東西都還沒有。還需要一個初始化外掛用的 PHP 檔案在工作目錄中,才能讓 WordPress 找到這支新外掛。

檔案名稱

初始化檔案的檔名並沒有限制,但最好與 slug 同名

例如:

./wp-content/plguins/cache-master/cache-master.php

檔頭資訊

檔頭資訊是一個放在檔案最前面,以 PHP 註解語法為主體的文字區塊。

(圖:初始化檔案的檔頭資訊)

在剛剛建立好的目錄下,建立一個空白的 PHP 檔案。塞入外掛資訊如下:

<?php
/**
 * Plugin Name: Cache Master
 * Plugin URI:  https://github.com/terrylinooo/cache-master
 * Description: A wordpress cache plugin.
 * Version:     1.0.0
 * Author:      Terry Lin
 * Author URI:  https://terryl.in/
 * License:     GPL 3.0
 * License URI: http://www.gnu.org/licenses/gpl-3.0.txt
 * Text Domain: cache-master
 * Domain Path: /languages
 */

接著存檔。

WordPress 的機制是,當進到外掛列表時,會掃描在 ./wp-content/plugins 這個目錄下的所有目錄,查看裡頭的 PHP 檔案中是否有以上的檔頭資訊。當找到時,就會出現在外掛列表中。

(圖:WordPress 後台外掛列表)

保持良好習慣

(1) 目錄結構

  • 工作目錄中,除了初始化檔案以及 uninstall.php 以外,同時避免該目錄下有其它的 .php 檔案。
  • 外掛中所有功能性的 PHP 程式都應放在下一層目錄再 include。

有的外掛把功能性的 php 檔案放在工作目錄第一層,只會造成 WordPress 在外掛列表時多花時間掃描檔頭資訊,是不好的習慣。

良好的檔案目錄結構可讀性也很重要。

(2) 必要的功能才載入檔案

  • 如果使用物件導向程式設計,最好能設計自動載入機制。(Day 12 - 自動載入機制
  • 只有後台才用的到的檔案,避免在前端頁面時也載入。
  • 只有前端頁面才用的到的檔案,避免在後台管理頁面也載入。

別讓自己的外掛成為效能殺手。優秀的外掛不但重視安全性,也重視記憶體的使用,多為使用虛擬主機的使用者們著想。

(3) 重視程式碼風格

WordPress 有它自己的程式碼風格,因此筆者在 Day 11 所介紹的 PSR 程式碼風格指南,在這裡不適用。入境隨俗,在社群裡採用社群的規範是最基本的尊重,也能保持程式碼風格的一致性。

總結

歡迎光臨 WordPress 開發者的世界,筆者身為一位 WordPress 愛好者,歡迎大家一起加入這個社群,為社群增添更多活力 ^^。

以下是開發者必讀的連結:

明天會帶大家一起認識 WordPress 的程式碼風格,並使用 PHP CodeSniffer 來輔助,快速上手 WordPress 的程式碼風格。我們明天見。


上一篇
Day 24 - PHP 套件設計實戰 (10) 發行 Composer 套件
下一篇
Day 26 - WordPress 外掛設計實戰 (2) 使用 PHP CodeSniffer 幫助熟悉 WordPress 程式碼風格
系列文
PHP 大師之路 - 開源的技術淬練30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言