# WP-CLI v0.24.0  發行說明

*Published:* 2016-07-27
*Author:* 殼殼蟲

正如我在WordCamp[2](#2bf64dd9) Europe演講中提到的：

> 就像WordPress有外掛一樣，WP-CLI[3](#9a11403f)的未來是命令包。為了迎接這個未來，我正在積極解決WordPress外掛存在的問題：
> 
> - 在WordPress外掛被視為core中包含的次要功能時，我希望WP-CLI包被視為WP-CLI中命令的一流公民。
> - 很多時候，WordPress外掛只有一個作者。我希望每個WP-CLI包都有兩到三名活躍的維護者。

在這個模型中，WP-CLI成為了共同的介面和支援應用程式層，用於豐富的功能生態系統。這樣做會為創新開闢更多領域，從而提供更多的想法選擇。而且因為有更多人參與包的作者，WP-CLI也會從更多的貢獻者池中受益。

在這個模型下，我的重點轉向了為WP-CLI包的作者提供世界一流的體驗。閱讀命令手冊以全面介紹如何建立WP-CLI命令。檢視`wp scaffold package` \[repo\]，這是生成新WP-CLI包的最簡單方法。請提出您對WP-CLI包索引的發展意見。並關注@runcommand，因為我將探索商業化WP-CLI產品和服務 – 希望runcommand只是幾個基於WP-CLI的企業中的第一個。

最後一個請求：如果您關心WP-CLI的釋出週期、依賴關係和向後相容性，請告訴我您認為WP-CLI應該以多頻率釋出。

讓我們繼續。使用`wp cli update`來安裝v0.24.0，代表著解決了449個問題和拉取請求。以下是新功能：

### 不再使用分叉的`wp-settings.php`

每個應用程式都有一個引導檔案，用於載入提供請求所需的所有必要工具。在WordPress中，這被稱為`wp-settings.php`。

從v0.8.0 \[#261\] 開始，WP-CLI使用了這個引導檔案的分叉版本，稱為`wp-settings-cli.php`，以提供更多對載入過程的控制，提供像`--skip-plugins`這樣的功能。但是，由於WordPress可以從`wp-settings.php`引入新檔案，因此維護一個分叉的版本會導致WP-CLI在WordPress的新版本釋出時經常出現問題。

幸虧在WordPress專案中進行了協調的變更，WP-CLI v0.24.0 回到了載入WordPress 4.6及更高版本的`wp-settings.php` \[#2278\]。這樣做應該使WP-CLI更具未來性，能夠適應WordPress的新版本。

### 更多語言的檔案

多虧了一群堅實的貢獻者的不懈努力，WP-CLI現在擁有更多語言的檔案。

- 數十個命令的示例已經改進，可供參考。
- 我們有一個新的CONTRIBUTING.md，同時也在網站上有一個頁面。
- 我們的新README.md用於WP-CLI首頁，並提供了日本語、法語、葡萄牙語（巴西）、土耳其語、德語、尼泊爾語和希臘語版本。

想要參與WP-CLI的檔案編寫嗎？檢視Github上標記為“scope:documentation”的問題。

### 輕鬆使用WP-CLI對任何WordPress安裝執行命令

WP-CLI別名是您在`wp-cli.yml`或`config.yml`中註冊的快捷方式，用於輕鬆執行命令以執行任何WordPress安裝。

例如，如果我在本地工作，使用runcommand主題，已經註冊了新的重寫規則，並需要在基於Vagrant的虛擬機器中重新整理重寫規則，我可以執行：

```
$ wp @dev rewrite flush
成功：重寫規則已重新整理。

```

然後，一旦程式碼進入生產環境，我可以執行：

```
$ wp @prod rewrite flush
成功：重寫規則已重新整理。

```

看，不再需要SSH[7](#287d4abd)連線到機器，更改目錄，一般需要花費一分鐘來訪問特定的WordPress安裝。

此外，別名組允許您註冊別名組。如果我想對兩個runcommand WordPress例項執行命令，我可以使用`@both`：

```
$ wp @both core check-update
成功：WordPress已是最新版本。
成功：WordPress已是最新版本。

```

別名可以在您的專案的`wp-cli.yml`檔案中註冊，或者在您的使用者全域性`~/.wp-cli/config.yml`檔案中註冊：

```
@prod:
  ssh: runcommand@runcommand.io~/webapps/production
@dev:
  ssh: vagrant@192.168.50.10/srv/www/runcommand.dev
@both:
  - @prod
  - @dev

```

### 等等，那個‘ssh’是什麼意思？

WP-CLI現在原生支援一個`--ssh=<host>`全域性引數，用於在遠端WordPress安裝上執行命令。非常感謝XWP和他們的社群為WP-CLI SSH鋪平道路。

在底層，WP-CLI將命令代理給`ssh`可執行檔案，然後將它們傳遞到遠端機器上安裝的WP-CLI。您的`-ssh=<host>`的語法可以是以下之一：

- 只有主機（例如`wp --ssh=runcommand.io`），這意味著使用者將從您當前的系統使用者推斷出，路徑將是SSH使用者的主目錄。
- 使用者和主機（例如`wp --ssh=runcommand@runcommand.io`）。
- 使用者、主機和WordPress安裝路徑（例如`wp --ssh=runcommand@runcommand.io~/webapps/production`）。路徑緊跟在主機的TLD之後。

或者，如果您使用`~/.ssh/config`，`<host>`可以是SSH配置中儲存的任何主機別名（例如，對我來說`wp --ssh=rc`）。

請注意，您需要在遠端伺服器上擁有一個可訪問的名為`wp`的WP-CLI的副本。此外，如果您已經定義了一個shell別名，或者正在擴充套件`$PATH`環境變數，`--ssh=<host>`將不會載入您的`.bash_profile`。如果這對您產生影響，下面是如何讓`wp`可訪問的更詳細的解釋。

有關別名和SSH支援的相關拉取請求包括：＃2755、＃2974、＃3012、＃3013、＃3014、＃3016、＃3026、＃3040、＃3070、＃3093、＃3100、＃3117、＃3134、＃3135、＃3145、＃3161、＃3180。

### 0.24.0中的其他一切

命令改進：

- 使用`wp shell`互動提示時新增了一個新行\[#2601，#2659\]。
- 改進了腳手架外掛的格式\[#2588，#2598\]。
- 為`wp (*) generate`命令引入了`--format=ids`，以便更輕鬆地連結\[2622\]。
- 新增了`term recount`命令，用於觸發重新計算分配給帖子的taxonomy術語\[#2625，#2628\]。
- 在腳手架時規範化了plugin/主題版本號和header格式\[#2644\]。
- 引入了`--due-now`來執行所有到期或過期的cron事件\[#2658\]。
- 允許`wp cron (event|schedule) list`和`wp option list`輸出單個欄位\[#2657，#3033\]。
- 在cron事件列表命令中新增了欄位過濾\[#2674\]。
- 在腳手架新外掛時包含了一個`.distignore`檔案，用於定義從分發中排除的檔案和資料夾\[#2697，#2756，#3042，#3088\]。
- 在`wp search-replace`中使用`--dry-run`時顯示摘要成功訊息\[#2740\]。
- 根據支援的WordPress版本腳手架外掛\[#2751\]。
- 對search-replace SQL[6](#f2d95682)匯出應用了擴充套件插入格式，以提供顯著的效能提升\[#2745\]。
- 在wp-admin或wp-includes中存在額外檔案時，使用`wp core verify-checksums`發出警告\[#2638\]。
- 為`wp cap list`，`wp user list-caps`和`wp super-admin list`支援`--format=<format>`引數\[#2851，#2961和#2949\]。
- 允許使用`wp term url`選擇多個術語ID\[#2865\]。
- 在檢查快取型別時支援PHP[5](#26303f64) 5.5 Memcache擴充套件\[#2945\]。
- 在主題已經啟用時使用`WP_CLI::warning()`，以使行為更一致的外掛啟用\[#3015\]。
- 為`wp db export`新增了`--porcelain`標誌\[#3032\]。
- 在`wp theme list --fields=<field>`中允許選擇作者欄位\[#3043\]。
- 引入`wp widget reset <sidebar>`，用於從sidebar中刪除所有小部件並將它們放在不活動的sidebar中\[#3077\]。
- 支援`wp core download`的“trunk”和“nightly”版本引數\[#3127\]。
- 為`wp role reset`新增了詳細資訊\[#3132，#3141\]。
- 為`wp search-replace`新增了`--include-columns=<columns>`引數\[#3142\]。
- 為`wp plugin test scaffold`新增了`--ci=<provider>`引數，支援‘travis’，‘circle’或‘gitlab’\[#3144，#3163\]。

框架增強：

- 在`WP_CLI::add_command()`中使用`is_callable()`，而不是自定義邏輯\[#2595\]。
- 引入`CompositeCommand->remove_subcommand()`，並修改引導過程以始終註冊核心命令\[#2629\]。
- 在子命令上執行`before_invoke`和`after_invoke`回撥，以便可以在子命令執行之前和之後立即掛鉤\[#2647，#2686\]。
- 引入`--debug=<group>`以限制除錯輸出到特定組的除錯呼叫\[#2648\]。
- 透過SSL[8](#56500f15)與包索引互動\[#2720\]。
- 在使用`--fields=<fields>`時支援帶有空格的CSV\[#2750\]。
- 在定義`ALTERNATE_WP_CRON`時停用WP cron\[#3118\]。
- 支援在`wp-cli.yml`中定義的位置引數\[#3120\]。
- 引入`WP_CLI_STRICT_ARGS_MODE`以處理引數歧義\[#3128\]。
- 註冊用於RESTful WP-CLI的`--http=<url>`全域性引數\[#3130\]。
- 引入`WP_CLI::add_wp_hook()`，用於在沒有訪問操作和過濾器時新增操作和過濾器\[#3195\]。
- 增加了最低支援的PHP版本到5.3.29\[#2672\]。

全面修復各種錯誤：

- 在例項化Composer[1](#887ef27b)物件時減輕了DateTime致命錯誤\[#2607\]。
- 消除了關於`skip_comments`的`wp export`通知\[#2620\]。
- 避免使用正規表示式修復引數引數的貪婪解析\[#2587，#2717\]。
- 在提供為arg引數時考慮`default`和`options`引數\[#2741\]。
- 在使用`wp media regenerate`時考慮大小不存在的情況，而且沒有註冊大小\[#2645\]。
- 從`translations_api()`捕獲`WP_Error`\[#2671，#3179\]。
- 不會錯誤地嘗試使用`--all`標誌啟用或停用外掛\[#2692\]。
- 在執行`wp cron event run`時在載入WordPress之前定義`DOING_CRON` \[#2691\]。
- 只有在從CSV匯入使用者時才嘗試在multisite上使用`add_user_to_blog()`\[#2690\]。
- 修復了列出與給定使用者名稱關聯的使用者meta的問題\[#2700\]。
- 在將評論移動到trash時區分了輸出，而不是在刪除評論時輸出\[#2701\]。
- 透過在每個檔案之後清除物件快取來防止`wp export`導致記憶體使用過高\[#2716\]。
- 在安裝時忽略模糊的空外掛和主題slug\[#2715\]。
- 在執行使用評論ID的命令時採用所有數字\[#2714，#2901\]。
- 只在存在時顯示軟體包目錄路徑\[#2773\]。
- 在主題命令中早日退出，如果主題損壞或出現錯誤\[#2798\]。
- 在主題目錄存在但錯誤時顯示錯誤，允許強制安裝\[#2821\]。
- 在安裝child theme時修復了一個PHP通知，並執行`wp theme status`\[#2976，#3047\]。
- 確保YAML[4](#b6cc787e)格式化程式處理物件和`--fields=<fields>`引數\[#3060\]。
- 修復了`wp menu list`如果`--format=ids`\[#3075\]的異常。
- 在停用外掛時填充最近活動的外掛列表\[#3068\]。
- 在應用引數預設值時，尊重`wp-cli.yml`的預設值\[#3111\]。
- 在傳遞給帖子、評論、術語和使用者命令的資料上呼叫`wp_slash()`\[#3156，#3157，#3158，#3159，#3167，#3173\]。
- 適當列出了重複的cron事件\[#3175\]。

此版本的貢獻者：andyexeter, bordoni, danielbachhuber, diggy, enrico-sorcinelli, ernilambar, geo4orce, gedex, gilbitron, hideokamoto, apertureless, JRGould, johnbillion, kkoppenhaver, kouratoras, markjaquith, miya0001, mustafauysal, NateWr, Nikschavan, ocean90, petenelson, phh, rachelbaker, PatelUtkarsh, PeterDaveHello, robhenley rodrigoprimo, roelveldhuizen, ShinichiNishikawa, shulard, stephenharris, stevenkword, swissspidy, taianunes, villevuor, voldemortensen, wesm87, 8bitodyssey

您可以在 Github 上瀏覽已解決問題的完整列表。

回到工作吧！

### 名詞解釋

1. Composer：PHP 的依賴管理工具 [↩︎](#887ef27b-link)
2. WordCamp：WordPress 社群全球官方交流活動 [↩︎](#2bf64dd9-link)
3. WP-CLI：WordPress 的命令列管理工具 [↩︎](#9a11403f-link)
4. YAML：一種易讀的資料序列化格式，常用於配置檔案 [↩︎](#b6cc787e-link)
5. PHP：WordPress 核心使用的服務端程式語言 [↩︎](#26303f64-link)
6. SQL：結構化查詢語言，用於操作關係型資料庫 [↩︎](#f2d95682-link)
7. SSH：安全外殼協議，用於遠端登入和管理伺服器 [↩︎](#287d4abd-link)
8. SSL：安全套接層協議，為網站提供加密通訊 [↩︎](#56500f15-link)
<!-- WP Chinese Converter Full Page Converted. Target Lang: zh-tw -->