WP-CLI v0.24.0 發行說明

正如我在 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 上瀏覽已解決問題的完整列表。

回到工作吧!

發表評論

發表回覆

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