WP-CLI v0.24.0 發行說明

Wpcli logo

正如我在WordCamp Europe演講中提到的:

就像WordPress有外掛一樣,WP-CLI的未來是命令包。為了迎接這個未來,我正在積極解決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.ymlconfig.yml中註冊的快捷方式,用於輕鬆執行命令以執行任何WordPress安裝。

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

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

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

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

看,不再需要SSH連線到機器,更改目錄,一般需要花費一分鐘來訪問特定的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) listwp option list輸出單個欄位[#2657,#3033]。
  • 在cron事件列表命令中新增了欄位過濾[#2674]。
  • 在腳手架新外掛時包含了一個.distignore檔案,用於定義從分發中排除的檔案和資料夾[#2697,#2756,#3042,#3088]。
  • wp search-replace中使用--dry-run時顯示摘要成功訊息[#2740]。
  • 根據支援的WordPress版本腳手架外掛[#2751]。
  • 對search-replace SQL匯出應用了擴充套件插入格式,以提供顯著的效能提升[#2745]。
  • 在wp-admin或wp-includes中存在額外檔案時,使用wp core verify-checksums發出警告[#2638]。
  • wp cap listwp user list-capswp super-admin list支援--format=<format>引數[#2851,#2961和#2949]。
  • 允許使用wp term url選擇多個術語ID[#2865]。
  • 在檢查快取型別時支援PHP 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_invokeafter_invoke回撥,以便可以在子命令執行之前和之後立即掛鉤[#2647,#2686]。
  • 引入--debug=<group>以限制除錯輸出到特定組的除錯呼叫[#2648]。
  • 透過SSL與包索引互動[#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物件時減輕了DateTime致命錯誤[#2607]。
  • 消除了關於skip_commentswp export通知[#2620]。
  • 避免使用正規表示式修復引數引數的貪婪解析[#2587,#2717]。
  • 在提供為arg引數時考慮defaultoptions引數[#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格式化程式處理物件和--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 上瀏覽已解決問題的完整列表。

回到工作吧!

發表評論

發表回覆

您的郵箱地址不會被公開。 必填項已用 * 標註