很難相信上次 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.php
和bootstrap.php
添加了文檔 [#2577, #2578] 。
框架增強:
- 將
WP_CLI::confirm()
切換為自動將響應轉換為小寫,允許使用Y
或y
[#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 上瀏覽已解決問題的完整列表。
發表回覆