WP-CLI v0.23.0 發行説明

很難相信上次 WP-CLI 發佈只有兩個月,因為這是我寫過的發佈文章中最長的一篇。提前致以歉意。

如果你沒能閲讀全文,這是關於 WP-CLI v0.23.0 你絕對需要知道的:

  • 此版本包括與 WordPress 4.5 兼容性。較舊的 WP-CLI 版本與 WordPress 4.5 不兼容。如果你計劃在將來使用 WordPress 4.5,你需要在這之前升級。
  • 現在你可以使用 wp package browse 瀏覽可用的軟件包,並用 wp package install 安裝它們。嘗試 wp package install runcommand/db-ack
  • 有許多新的工具來註冊命令。不再需要擴展 WP_CLI_Command。查看命令手冊以瞭解更多信息。
  • 所有維基頁面已經遷移到網站上的文檔門户,包括新頁面,記錄了你可以在自己的命令中使用的內部 API 。鼓勵提交拉取請求。

現在我已經透露了所有的驚喜,讓我們繼續發佈文章。

哦,天哪,我忘記了另外兩件事:

  • 對於那些使用 Phar 文件的人,這應該是你們大多數人,WP-CLI 現在會自動檢查更新,並在適用時提示你進行更新。甚至對於使用夜間構建版本的人也有效。這個行為是可配置的,下文有詳細信息。
  • 我已經決定以 runcommand 為我的新 WP-CLI 企業命名。在網站上註冊電子郵件以獲得更新,或者在 Twitter 上關注 @runcommand 。

現在,讓我們繼續發佈文章。

WordPress 4.5 兼容性

WordPress 4.5 在 wp-settings.php 中加載了另一個文件。由於 WP-CLI 有一個自定義的 wp-settings-cli.php,WP-CLI v0.23.0 是唯一與 WordPress 4.5 兼容的版本。

重要的是,由於這些變更的性質,WP-CLI 0.23.0 之前的版本將與 WordPress 4.5 不兼容。

查看這個拉取請求中的變更性質。

想要幫助修復這個問題嗎?重新倒一杯咖啡,然後深入閲讀 WordPress Trac 上的 #34936 討論。

從軟件包索引安裝社區命令

考慮以下情況 (#2523):

使用 theme list 命令,沒有 --url 參數顯示主題是否啓用於網絡並在默認站點中處於活動狀態。

如果你傳遞網絡的站點的 --url,該命令將顯示該站點中的主題是否活動。

但是我找不到一種列出網絡中每個站點中不活動主題的方法,以便我可以安全地禁用並刪除它們,我很願意擁有這個功能

如果你必須使用 WordPress 網絡管理員完成這項任務,那可能需要你數小時,甚至數天。而僅僅編寫用於解決這個問題的 WP-CLI 命令僅花費了我 3 分鐘 (runcommand/find-unused-themes) 。 WP-CLI 確實是管理 WordPress 最快捷的接口。

WP-CLI 通常在決定是否引入新功能時遵循 80/20 規則。如果該功能對大多數人可能有用,那可能會引入;否則,可能不會。那 20% 不應該被遺留下來,尤其是當涉及到真正有用的命令時。

今天,我很自豪地重新引入了軟件包索引,這是由社區維護的 WP-CLI 軟件包的目錄。瀏覽可用的包以安裝它們,使用 wp package browse(文檔) 。一旦找到你需要的解決方案,就可以使用 wp package install(文檔) 進行安裝:

$ wp package install runcommand/find-unused-themes 正在安装 runcommand/find-unused-themes (dev-master) 更新 /home/vagrant/.wp-cli/packages/composer.json 以需要该软件包... 使用 Composer 安装该软件包... --- 从包信息中加载 composer 仓库 更新依赖关系 分析 2223 个软件包以解析依赖关系 分析 29243 条规则以解析依赖关系  - 正在安装软件包 正在写入锁文件 生成自动加载文件 --- 成功:软件包安装成功。 $ wp find-unused-themes 正在检查 http://wordpress-develop.dev/ 中未使用的主题... 正在检查 http://wordpress-develop.dev/foo/ 中未使用的主题... +----------------+---------+ | 名称           | 版本    | +----------------+---------+ | 默认           | 1.7.2   | | mystore        | 1.0.6   | | p2             | 1.5.5   | | twentyeleven   | 2.3     | | twentyfourteen | 1.6     | | twentyten      | 2.1     | | twentythirteen | 1.8     | | twentytwelve   | 1.9     | +----------------+---------+ 

相當酷,對吧?請注意,WP-CLI 的軟件包管理在這個時候被視為測試版功能。你可能會遇到一些尚未報告的問題,或者發現一個尚未報告的錯誤。如果你有興趣深入研究 Composer 的內部工作,幫助改進 wp package 將是一個很好的開始。

wp package 相關的拉取請求包括 #2442 、 #2460 、 #2491 、 #2512 、 #2514 、 #2533 、 #2534 、 #2537 、 #2540 、 #2543 、 #2546 、 #2547 、 #2555 、 #2561 。

註冊更多命令

有沒有想過為什麼在編寫自己的命令時需要擴展 WP_CLI_Command?實際上,你不需要這樣做。

實際上,WP_CLI::add_command()(文檔) 現在支持將任意可調用對象註冊為 WP-CLI 命令。例如,這裏有一個用於重置一個或多個用户密碼的閉包命令 (runcommand/reset-passwords):

/**  * 为一个或多个 WordPress 用户重置密码。  *  * <user>...  * : 指定一个或多个用户登录名或 ID 。  */ $reset_password_command = function( $args ) {     $fetcher = new WP_CLIFetchersUser;     $users = $fetcher->get_many( $args );     foreach( $users as $user ) {         wp_update_user( array( 'ID' => $user->ID, 'user_pass' => wp_generate_password() ) );         WP_CLI::log( ""为 {$user->user_login} 重置密码。"" );     }     WP_CLI::success( '密码已重置。' ); }; WP_CLI::add_command( 'user reset-passwords', $reset_password_command ); 

想要在命令之間重用參數定義嗎?現在,你可以將命令概要作為 WP_CLI::add_command() 的第三個參數進行註冊 (runcommand/hook):

WP_CLI::add_command( 'hook', $hook_command, array(     'shortdesc' => '列出已注册给定操作或筛选器的回调。',     'synopsis' => array(         array(             'name'        => 'hook',             'type'        => 'positional',             'description' => '操作或筛选器的键。',         ),         array(             'name'        => 'format',             'type'        => 'assoc',             'description' => '将回调列为表、 JSON 或 CSV 。',             'optional'    => true,             'options'     => array( 'table', 'json', 'csv' ),             'default'     => 'table',         ),     ), ) ); 

請注意 format 的默認參數屬性。 WP-CLI 接受參數註冊的一部分,以使處理用户輸入更容易。這些屬性還可以在可調用的 PHPDoc 中定義:

/**  * 列出已注册给定操作或筛选器的回调。  *  * <hook>  * : 操作或筛选器的键。  *  * [--format=<format>]  * : 将回调列为表格、 JSON 或 CSV 。  * ---  * options:  *   - table  *   - json  *   - csv  * default: table  * ---  */ $hook_command = function( $args, $assoc_args ) { 

查看命令手冊,深入瞭解命令註冊。與 WP_CLI::add_command() 的這些改進相關的拉取請求包括 #2373 、 #2389 、 #2398 、 #2409 、 #2556 、 #2559 。

更多、更好、更易找到的文檔

實際上很難想象以前人們是如何操作的。以下是文檔領域的變化:

  • 維基已經以網站上的文檔門户的形式重生。當我將它們搬到新位置時,我花了時間整理頁面,希望你會發現新的命令手冊非常有幫助。
  • 現在公開記錄了你可以在自己的命令中使用的內部 API 。內部 API 頁面是從代碼庫生成的,這應該極大地幫助維護工作。
  • 在每個命令頁面上,都有一個 「Github 問題」 鏈接,以便更容易找到給定命令的所有未解決和已解決問題。例如,這是所有關於 wp package 及其子命令的未解決問題。請注意,這不一定是精確的,因為我沒有回顧所有時間的所有問題。隨着時間的推移,這個功能將變得更加有用。

與文檔改進相關的拉取請求包括 #2454 、 #2487 、 #2494 、 #2499 、 #2507 、 #2513 、 #2515 。

自動更新檢查

對於那些使用 WP-CLI 作為 Phar 文件的人,這應該是大多數人,版本 0.23.0 及更高版本將自動檢查更新。如果發現更新,您將被提示安裝。

即使對於那些使用夜間構建的人,自動更新檢查也能正常工作!使用 wp cli update --nightly 在每個 主要發佈版本 後返回到夜間版本。

默認情況下,自動更新檢查將每天運行一次,適用於具有可寫權限的 WP-CLI Phar 文件的用户。分發文件或目錄不可寫?那麼檢查將不會運行。自動更新檢查在用户運行 wp help <some-command> 時覽發,而不是在腳本運行時觸發。此頻率可以使用 WP_CLI_AUTO_CHECK_UPDATE_DAYS 環境變量進行配置,也可以使用 WP_CLI_DISABLE_AUTO_CHECK_UPDATE 環境變量來完全禁用。

此功能的相關拉取請求包括 #2536 和 #2538 。

0.23.0 中的其他內容

命令改進:

  • 通過僅獲取所需的數據,提高了 wp (user|post) list --format=count 的性能 [#2370, #2387] 。
  • wp scaffold plugin-tests 中使用 Travis 默認設置時,防止重複構建 [#2377] 。
  • 使用 wp comment generate --post_id=<post-id> 為特定帖子生成評論 [#2388] 。
  • 在使用 wp core (update|download) --force 時,清理了上個版本的文件 [#2382, #2406, #2413, #2432] 。
  • wp cron event run 中為個別事件添加了計時器 [#2437] 。
  • 引入了 wp term meta 以管理術語 元數據 [#2444] 。
  • wp (theme|plugin) update 添加了 CSV 和 JSON 輸出格式 [#2452] 。
  • 使用 wp core download 驗證下載的存檔文件的 MD5 哈希值 [#2461]
  • wp core verify-checksums 中完全避免加載 WordPress [#2459] 。
  • 支持使用 wp site empty 清空術語元數據 [#2506] 。
  • scaffold (post-type|taxonomy) 添加 WP REST API 註冊參數 [#2551] 。
  • 在運行 wp scaffold plugin-tests 時,為 test-sample.phpbootstrap.php 添加了文檔 [#2577, #2578] 。

框架增強:

  • WP_CLI::confirm() 切換為自動將響應轉換為小寫,允許使用 Yy [#2366] 。
  • 在 WP 加載過程中,添加了 (before|after)_wp(_config)_load 鈎子,允許通過 --require 注入的代碼在引導過程中進行修改 [#2375] 。
  • 根據 WordPress 編碼標準,在項目根目錄中添加了 .editorconfig [#2395] 。
  • WP_CLI::error_to_string() 中將 WP_Error 數據編碼為 JSON,以便數據實際上是可讀的 [#2397] 。
  • WP_CLI::error() 中支持自定義退出代碼 [#2440] 。
  • 引入了 --format=yaml 以輕鬆顯示數據為 YAML [#2453] 。
  • 支持配置深度合併和繼承 [#2496] 。
  • 更新 Composer 依賴項 [#2554]

各方面的錯誤修復:

  • bin/install-wp-tests.sh 中,在下載並設置 wp-tests-config.php 之前不要進入 WP_TESTS_DIR 目錄 [#2371] 。
  • 使用 --prompt 時,現在只會提示執行線程中的第一個命令。以前,在命令中使用 WP_CLI::run_command() 會導致提示 UX 再次出現 [#2400] 。
  • 在成功之前不要在 wp theme activate 上離開 [#2412] 。
  • 在列出術語之前檢查是否存在 分類 [#2414] 。
  • 在嘗試更新不存在的 核心 版本時,在嘗試解壓無效存檔之前檢查 HTTP 響應代碼 [#2368] 。
  • 修復了 wp server 在 PHP 二進制文件包含空格時的問題 [#2422] 。
  • wp export--skip_comments 標誌進行了修復,這個問題已經存在了很長時間 [#2427]
  • 在缺少標題或説明時在 wp media import 中保留 IPTC 數據;從默認標題中移除擴展名 [#2438, #2466] 。
  • 在更新主題或插件時禁用檢查翻譯更新 [#2439] 。
  • 在 multisite 上創建新用户時修正了參數序列順序 [#2443] 。
  • --format=table 時正確處理自動着色 [#2458] 。
  • 使用核心的版本檢查 API 查找更新,這為我們提供了確切的下載鏈接 [#2469] 。
  • wp cli update 中使用更穩健的下載失敗檢查 [#2488] 。
  • 在核心尚未安裝時,提前運行 wp core 命令的幫助 [#2497] 。
  • 修復了當命令具有子命令時全局參數的格式 [#2516] 。
  • wp search-replace 中正確處理多列鍵 [#2531] 。
  • 當將 WP-CLI 安裝到父 Composer 項目時,使用正確的自動加載程序路徑 [#2550] 。
  • 將字段正確傳遞給 plugins_api() 請求的 wp plugin search;添加 page 參數 [#2570, #2571] 。
  • wp theme status 中添加了 parent 作為潛在狀態 [#2573]

貢獻者:anantshri, danielbachhuber, edueo, GaryJones, gilbitron, hina, hinoue-work, jacobischwartz, marco-c, markjaquith, markkimsal, mbovel, ottok, rodrigoprimo, sourcerer-mike, staude, szepeviktor, za-creature

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

發表評論

發表回覆

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