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

回到工作吧!

發表評論

發表回覆

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