WordPress外掛開發須知:如何開發外掛併發布到WordPress外掛目錄

如何開發外掛併發布到WordPress外掛目錄

WordPress 外掛目錄擁有超過 50,000 個免費外掛,是每個 WordPress 使用者的城市商城,在這裡您可以找到涵蓋您下一個網站的所有特性和功能的外掛。然而,您可能找不到提供客戶明確要求的確切功能的外掛。不管喜歡與否,您可能必須啟動您最喜歡的文字編輯器並開始編碼。但您是否考慮過與整個 WordPress 社羣共享您的外掛的可能性?

這篇文章的主要目的是與讀者一起探索通過 WordPress.org 儲存庫分發外掛的好處。我將快速總結建議和鼓勵您遵循的最佳實踐,然後我將帶您瞭解計劃將外掛釋出到 WordPress 外掛目錄時應該瞭解的 SVN 關鍵概念。

為什麼要使用 WordPress 外掛目錄?

將外掛釋出到 WordPress 外掛目錄的第一個原因是可以免費利用許多出色的工具和服務,例如外掛描述、統計資訊、活動安裝、更新日誌、支援論壇等。此外,只要有新版本可用,使用者就會收到通知,並可以直接從 WordPress 外掛螢幕執行升級。WordPress.org 外掛在搜尋引擎中的可見性更高,您可以利用強大的媒介來宣傳您的身份並提高您作為開發人員的聲譽。

如果您不是一位出色的營銷人員或沒有時間進行營銷,WordPress 外掛目錄可以成為獲取免費流量和吸引關注您的外掛的好方法。

WordPress 外掛目錄

WordPress 外掛目錄

釋出外掛的另一個好理由是為 WordPress 社羣做貢獻。WordPress 是免費軟體,擁有龐大的社羣,免費提供大量主題和外掛。釋出 WordPress 外掛是向所有免費提供其作品的優秀人士表示感謝的最佳方式。

你應該關心什麼

請記住,如果您的外掛編碼不當、您不定期更新外掛,或者您不提供快速有效的支援(當然,如果您不是值得信賴的開發人員),那麼更高的知名度可能會損害您的聲譽。以下是一些需要牢記的關鍵概念。

編碼

關於編碼有很多話要說,你會發現很多有用的讀物​​。但是如果你是一名 WordPress 開發人員,Codex 就是你的聖經,你應該在開始編碼之前閱讀外掛指南。以下是我個人的關鍵概念列表:

  • 保持程式碼可讀性。這樣其他開發人員就可以瞭解您的外掛的作用,幫助您查詢錯誤,並在您的程式碼上開發自己的外掛。為了促進開發人員之間的協作,WordPress Codex 提供了 WordPress 編碼標準,這是所有 WordPress 開發人員的最佳實踐的總結。
  • 始終註釋您的程式碼。內聯文件是絕不能低估的寶貴資源。它允許任何人快速瞭解函式的作用、接受哪些引數、返回哪些變數等。在註釋中,您可以新增連結、指令碼版本和其他描述,這些描述在您或任何其他人編輯指令碼時非常有用。我想說 WordPress 使用者是一個學習社羣,遵守內聯文件標準是讓人們學習您已知知識的好方法。
  • 儘可能優先使用 WordPress 函式而不是 PHP 函式。WordPress 函式允許您構建安全高效的程式碼。尤其是當您需要從資料庫獲取資料時,API 函式可以讓您免於構建複雜的查詢,而這些查詢的安全性很可能不如內建的 WordPress 查詢。核心背後有很多優秀的開發人員,他們正在做著我們可以利用的出色工作。

特徵

即使你不會因你的工作而獲得報酬,你也應該將你的外掛視為要出售的產品。你不需要成為一名營銷專家:你只需要知道你的外掛應該在某種程度上是獨一無二的和/或與類似外掛區分開來。給你的外掛起一個令人難忘且有意義的名字,以及獨特的功能,讓人們說“我需要它!”。而且,如果你的外掛提供的功能已經被其他外掛所涵蓋,請專注於可訪問性和易用性,為使用者提供增值服務,使你的產品與競爭對手的產品有明顯的區別。

支援

通過外掛目錄分發的每個外掛都有一個特定的論壇,使用者可以在此聯絡您尋求幫助。為使用者的問題提供清晰的答案,並幫助他們解決問題。快速而恰當的回覆對於建立您作為值得信賴的開發人員的聲譽至關重要。考慮任何主題,並獲取任何可以幫助您改進外掛的資訊。

更新

定期更新外掛,在需要時推送小的更改,但不要過多。太多的更新可能會讓您的使用者失望。

許可

WordPress 是在 GNU 通用公共許可證 V2 下發布的,大多數外掛也是在相同的 GPL 許可證下發布的。實際上,並不嚴格要求外掛必須在同一許可證下發布,因為任何相容的許可證都是允許的。無論如何,建議使用 GPLv2(閱讀有關 GPL 許可的更多資訊)。

為了給這篇文章提供一個可行的示例,我們在 4 個方便的 WordPress 媒體庫技巧中剖析的外掛已釋出到目錄中。下載 ExIF 檢視器並在文字編輯器中開啟其檔案,然後返回本文並深入瞭解外掛結構。

外掛結構

您的外掛將儲存在 WordPress.org SVN 儲存庫中。任何人都可以簽出副本,但只有作者才有簽入許可權。釋出外掛後,您可以新增新檔案,編輯或刪除本地計算機上的現有檔案,然後將這些更改上傳到伺服器。所有更改都由 subversion 跟蹤,以便您以後可以恢復到舊版本或修訂版本。SVN儲存庫提供四個預設資料夾:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/assets/
/branches/
/tags/
/trunk/
/assets/ /branches/ /tags/ /trunk/
/assets/
/branches/
/tags/
/trunk/
  • 螢幕截圖、header 和圖示放入 assets
  • trunk 是放置外掛檔案的目錄
  • 程式碼的不同分支進入 branches
  • 外掛釋出將儲存在 tags

每個外掛必須提供至少兩個檔案:readme.txt 檔案和主 PHP 指令碼。您也可以選擇新增一些要在外掛頁面上顯示的影象(資產)。

外掛資源

資產包括外掛 header、圖示和螢幕截圖。外掛 header 是您可以在外掛頁面頂部看到的 JPG 或 PNG 影象。檔名取決於影象的寬度和高度。目前,允許使用以下名稱/尺寸:

  • 常規:banner-772×250。(jpg|png)
  • 視網膜:banner-1544×500。(jpg|png)

圖示是具有以下名稱/尺寸的方形影象:。

  • icon-128×128.(jpg|png)
  • icon-256×256.(jpg|png)
  • icon.svg

您不應在檔名中指定 SVG 尺寸,因為這些影象可以縮放到任意大小。如果您使用 SVG,則必須提供 PNG 圖示作為後備。

截圖是外掛頁面內容中顯示的影象。允許使用 PNG 和 JPEG 格式,檔名必須小寫並遵循以下結構:

  • screenshot-1.(jpg|png)
  • screenshot-2.(jpg|png)

對於每張截圖,您都應該在自述檔案中提供描述。所有這些圖形都應新增到外掛本地目錄中的 assets 資料夾中(有關外掛資產如何工作的更多資訊)。

一個優秀的外掛頁面

吸引人的、一致的資產構成了一個優秀的外掛頁面

Readme.txt 檔案

您應該在主指令碼中為您的外掛提供一個 readme.txt 檔案和適當的標題。 首先,您需要一個包含以下資訊的 readme.txt 檔案:

  • Plugin name(外掛名稱
  • Contributors(貢獻者): (a list of wordpress.org userid’s)(wordpress.org 使用者 ID 列表)
  • Donate link(捐贈連結): http://example.com/
  • Tags(標籤): (外掛標籤)
  • Requires at least: (最低 WordPress 版本)
  • Tested up to: (已測試 WordPress 版本)
  • Stable tag:(外掛版本)
  • License: GPLv2 或更高版本(或相容)
  • License URI: https://www.gnu.org/licenses/gpl-2.0.html
  • Description(描述
  • Installation(安裝
  • Screenshots(截圖
  • Changelog(更新日誌)

螢幕截圖部分允許您為想要包含在外掛頁面中的任何影象新增描述。WordPress.org 提供了外掛 readme.txt 檔案標準模板,可幫助您構建自述檔案。此外,您可以使用自述檔案驗證器檢查檔案是否正確。

Readme Validator

Readme Validator 輸出自述檔案上的註釋和警告

外掛頭註釋

標頭註釋告訴 WordPress 該檔案是一個外掛。如果您不打算髮布外掛,則唯一必填欄位是外掛名稱。相反,如果您打算髮布外掛,則新增的資訊越多越好。以下是可用欄位的列表:

  • Plugin Name(外掛名稱):(必填)您的外掛名稱必須是唯一的。釋出前,請在外掛目錄中搜尋同名外掛
  • Plugin URI(外掛 URI):外掛的主頁
  • Description(描述):一行外掛描述(少於 140 個字元)
  • Version(版本):當前外掛版本(必須高於以前的版本)
  • Author(作者):一個或多個作者姓名,以逗號分隔
  • Author URI(作者 URI):作者的主頁
  • License(許可證):外掛許可證的 slug(即 GPL2)
  • License URI(許可證 URI):許可證全文的連結(即 https://www.gnu.org/licenses/gpl-2.0.html)
  • Text Domain:外掛的文字域
  • Domain Path(域路徑):在哪裡找到翻譯檔案(請參閱如何使您的外掛國際化

以下是最流行的 WordPress 外掛之一的 header 註釋:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
/**
* @package Akismet
*/
/*
Plugin Name: Akismet Anti-Spam
Plugin URI: https://akismet.com/
Description: Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from spam</strong>. It keeps your site protected even while you sleep. To get started: activate the Akismet plugin and then go to your Akismet Settings page to set up your API key.
Version: 3.3.2
Author: Automattic
Author URI: https://automattic.com/wordpress-plugins/
License: GPLv2 or later
Text Domain: akismet
*/
<?php /** * @package Akismet */ /* Plugin Name: Akismet Anti-Spam Plugin URI: https://akismet.com/ Description: Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from spam</strong>. It keeps your site protected even while you sleep. To get started: activate the Akismet plugin and then go to your Akismet Settings page to set up your API key. Version: 3.3.2 Author: Automattic Author URI: https://automattic.com/wordpress-plugins/ License: GPLv2 or later Text Domain: akismet */
<?php
/**
* @package Akismet
*/
/*
Plugin Name: Akismet Anti-Spam
Plugin URI: https://akismet.com/
Description: Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from spam</strong>. It keeps your site protected even while you sleep. To get started: activate the Akismet plugin and then go to your Akismet Settings page to set up your API key.
Version: 3.3.2
Author: Automattic
Author URI: https://automattic.com/wordpress-plugins/
License: GPLv2 or later
Text Domain: akismet
*/

釋出到 WordPress 外掛目錄

準備就緒後,註冊並提交您的外掛

第一個外掛版本必須上傳以供人工稽覈

第一個外掛版本必須上傳以供人工稽覈

WordPress.org 工作人員將手動稽覈該外掛。此過程可能需要一到十天。如果發現任何問題,您將收到一封電子郵件,說明問題所在以及應採取哪些措施來修復錯誤。

修訂過程可能需要長達十天的時間

修訂過程可能需要長達十天的時間

一旦外掛獲得批准,您將收到一封電子郵件,通知您可以訪問 SVN 儲存庫。

通知您該外掛已獲批准

一封電子郵件將通知您該外掛已獲批准

目前,該外掛還不能下載,但您可以通過命令列(或任何 SVN 客戶端)上傳、編輯和刪除檔案。下圖顯示了當前的外掛頁面。

外掛頁面處於活動狀態

外掛頁面處於活動狀態,但外掛無法下載

上傳外掛

我們的首要任務是將外掛檔案上傳到 SVN 儲存庫,但首先我們需要一個本地資料夾來儲存外掛檔案:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ mkdir localdir
$ mkdir localdir
$ mkdir localdir

現在我們可以檢查預構建的儲存庫:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ svn co https://plugins.svn.wordpress.org/plugin-name path/to/localdir
$ svn co https://plugins.svn.wordpress.org/plugin-name path/to/localdir
$ svn co https://plugins.svn.wordpress.org/plugin-name path/to/localdir

我們將收到以下回復:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
> A plugin-name/branches
> A plugin-name/tags
> A plugin-name/trunk
> Checked out revision 99999999.
> A plugin-name/branches > A plugin-name/tags > A plugin-name/trunk > Checked out revision 99999999.
> A    plugin-name/branches
> A    plugin-name/tags
> A    plugin-name/trunk
> Checked out revision 99999999.

A 表示資料夾已從中央倉庫新增到本地資料夾,接下來就是將檔案新增到本地 /trunk 資料夾,並上傳到倉庫:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
localdir/$ svn add trunk/*
localdir/$ svn add trunk/*
localdir/$ svn add trunk/*

您需要進行身份驗證。登入後,您將收到以下響應:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
> A trunk/my-plugin.php
> A trunk/readme.txt
> A trunk/my-plugin.php > A trunk/readme.txt
> A    trunk/my-plugin.php
> A    trunk/readme.txt

注意:不要將主外掛檔案放在主幹的子資料夾中,因為這會中斷下載。

現在將更改簽入到儲存庫:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
localdir/$ svn ci -m 'First plugin version'
localdir/$ svn ci -m 'First plugin version'
localdir/$ svn ci -m 'First plugin version'

以下是最終的迴應:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
> Adding trunk/my-plugin.php
> Adding trunk/readme.txt
> Transmitting file data .
> Committed revision 9999999.
> Adding trunk/my-plugin.php > Adding trunk/readme.txt > Transmitting file data . > Committed revision 9999999.
> Adding trunk/my-plugin.php
> Adding trunk/readme.txt
> Transmitting file data .
> Committed revision 9999999.

ExIF Viewer 本地副本的檔案結構

ExIF Viewer 本地副本的檔案結構

接下來,我們必須新增外掛資產:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
localdir/$ svn add assets/*
localdir/$ svn add assets/*
localdir/$ svn add assets/*

然後再次檢查更改:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
localdir/$ svn ci -m 'Assets upload'
localdir/$ svn ci -m 'Assets upload'
localdir/$ svn ci -m 'Assets upload'

就這樣!跳轉到您的外掛頁面,開始推廣您的作品!

ExIF Viewer外掛

ExIF Viewer外掛的最後一頁

釋出新版本

在釋出下一個版本之前,您必須記得更新 trunk/readme.txt 檔案中的 Stable Tag 欄位和外掛頭註釋中的版本號。當新版本準備好釋出時,將您的檔案複製到 /tags 的子資料夾,並將子資料夾的名稱設定為版本號(即 1.0.1):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
localdir/$ svn cp trunk tags/1.0.1
> A tags/1.0.1
localdir/$ svn cp trunk tags/1.0.1 > A tags/1.0.1
localdir/$ svn cp trunk tags/1.0.1
> A tags/1.0.1

然後檢查更改:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
localdir/$ svn ci -m "tagging version 1.0.1"
> Adding tags/1.0.1
> Adding tags/1.0.1/my-plugin.php
> Adding tags/1.0.1/readme.txt
> Committed revision 999999.
localdir/$ svn ci -m "tagging version 1.0.1" > Adding tags/1.0.1 > Adding tags/1.0.1/my-plugin.php > Adding tags/1.0.1/readme.txt > Committed revision 999999.
localdir/$ svn ci -m "tagging version 1.0.1"
> Adding         tags/1.0.1
> Adding         tags/1.0.1/my-plugin.php
> Adding         tags/1.0.1/readme.txt
> Committed revision 999999.

就這樣!新版本上線了。

編輯檔案

有時,您可能需要進行不需要新版本的小更改。首先,更新儲存庫的本地副本:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
localdir/$ svn up
> At revision 999999.
localdir/$ svn up > At revision 999999.
localdir/$ svn up
> At revision 999999.

然後編輯檔案並檢查更改:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
localdir$ svn stat
> M trunk/readme.txt
localdir$ svn stat > M trunk/readme.txt
localdir$ svn stat
> M       trunk/readme.txt

M 表示這些檔案已被修改。接下來,您可以看到兩個版本之間發生了什麼變化:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
localdir$ svn diff
localdir$ svn diff
localdir$ svn diff

最後,檢查中央儲存庫的更改:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
localdir$ svn ci -m "minor changes"
> Sending trunk/readme.txt
> Transmitting file data .
> Committed revision 999999.
localdir$ svn ci -m "minor changes" > Sending trunk/readme.txt > Transmitting file data . > Committed revision 999999.
localdir$ svn ci -m "minor changes"
> Sending trunk/readme.txt
> Transmitting file data .
> Committed revision 999999.

概括

無論您決定釋出商業外掛的精簡版本,還是釋出外掛以貢獻給社羣,WordPress.org 目錄都是分發您的作品的最佳場所。它為您提供廣泛的曝光機會,並提供許多專業工具來分發和推廣您的外掛。

評論留言