# 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-hk -->