正如我在 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.yml
或config.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) list
和wp 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 list
,wp user list-caps
和wp 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_invoke
和after_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_comments
的wp export
通知 [#2620] 。 - 避免使用正規表示式修復引數引數的貪婪解析 [#2587,#2717] 。
- 在提供為 arg 引數時考慮
default
和options
引數 [#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 上瀏覽已解決問題的完整列表。
回到工作吧!
發表回覆