正如我在 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 上瀏覽已解決問題的完整列表。
回到工作吧!
發表回覆