在其生命的大部分時間裡,WordPress都是使用簡單的程式碼庫構建的,其中少量物件導向的 PHP 是最抽象的系統。然而,在過去的幾年裡,這種情況正在好轉。從單元測試到CSS預處理和命令列工具,越來越多對開發人員友好的資產不斷湧現。在本文中,我們將介紹我的最愛之一:WP-CLI。
什麼是WP-CLI?
WP-CLI是一個命令列工具,供開發人員管理 WordPress 安裝的常見任務(並不常見)。它可以新增/刪除使用者、文章、類別、插入測試資料、在資料庫中搜尋和替換、重置密碼、幫助解決效能問題等等!
WP-CLI作為一個開源專案已有十多年的歷史, 自2003年以來主要由Daniel Bachhuber維護 。WP-CLI 的主要目標是幫助加快WordPress開發人員的工作流程。
多年來,該專案已經出現了更多!它現在甚至成為其他開源專案(例如Trellis和Bedrock )的要求。截至2017年1月,WP-CLI正式遷移到WordPress.org,現在也由Alain Schlesser共同維護。
WP-CLI v2於2018年8月8日釋出,因此我們還將探索一些變化和新功能。
獲取WP-CLI
WP-CLI v2.0.0的最低PHP要求已提高到PHP 5.4。雖然這是一個很好的進步,但我們建議您至少執行受支援的PHP版本,即5.6或更高版本。
要開始使用,您需要安裝WP-CLI——一個非常簡單的過程。Linux和OSX的步驟如下,依次發出這三個命令:
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar chmod +x wp-cli.phar sudo mv wp-cli.phar /usr/local/bin/wp
如果出現問題或者您使用的是Windows,請參閱基本說明或其他安裝方法。
完成後,您應該能夠發出wp --info
命令並獲得有意義的響應。
如果你想在你的伺服器上安裝WP-CLI,這個過程是一樣的。不確定您當前執行的是哪個版本?您可以隨時發出wp cli version
命令來查詢。
WP-CLI的基礎知識
從命令列訪問WordPress本身就很強大,但在使用bash指令碼時可以為您提供更多控制和速度提升。
Bash指令碼允許您使用單個命令執行一系列命令。您可以鍵入bash install-and-setup.sh
並獲得以下結果:
- 下載WordPress
- 建立和填充
wp-config.php
- 建立資料庫
- 安裝WordPress
- 安裝並啟用您需要的任何外掛
- 安裝並啟用主題
- 下載並新增測試內容
這些將是我為專案建立新測試環境所採取的步驟。通常至少需要5-10分鐘,特別是如果涉及到一些外掛。發出單個命令顯然要快得多。
一般WP-CLI命令
如果您習慣於在終端中工作,那麼WP-CLI對您來說沒有什麼特別之處。命令總是以開頭,wp
後跟命令和子命令,後跟必需和可選引數,如下所示:
wp command subcommand requiredparam --optionalparam --optionalparam2=value
讓我們安裝一個主題,看看它是如何與真實命令配合使用的:
wp theme install twentyseventeen --activate
這將在您的 WordPress 安裝中安裝並啟用二〇一七主題。
請注意,WP-CLI將與您當前在終端中的WordPress安裝一起使用。如果您切換目錄以轉到另一個WordPress安裝,它將適用於該安裝。
有用的例子
簡而言之,這就是WP-CLI!雖然您可以執行一些高階操作(我們稍後會介紹),但您已經掌握了足夠的知識,可以開始並執行所需的任何操作。我建議檢視命令列表,嘗試其中的一些。我們將在這裡看一些有用的東西,然後繼續通過SSH使用WP-CLI和使用bash指令碼。
安裝WordPress
我經常使用WP-CLI來設定測試環境,第一步是vanilla安裝。這是我執行的命令列表:
wp core download wp core config --dbname=mydbname --dbuser=mydbuser --dbpass=mydbpass --dbhost=localhost --dbprefix=whebfubwef_ --extra-php <<PHP define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); PHP wp db create wp core install --url=http://siteurl.com --title=SiteTitle --admin_user=username --admin_password=mypassword --admin_email=my@email.com
注意這有多酷!使用第一個命令下載最新版本的WordPress。第二個命令使用資料庫訪問許可權和一些附加的PHP設定配置檔案。額外的常量確保我們有我們的除錯選項進行測試。如果您想瞭解有關除錯WordPress的更多資訊,我們在此處提供了詳細指南。
第三個命令建立資料庫(WP-CLI使用配置檔案中的資料庫訪問資訊),最後,我們使用幾個引數安裝WordPress。
重新安裝WordPress核心
您還可以使用WP-CLI重新安裝WordPress核心。以下命令將下載沒有預設主題和外掛的WordPress核心。
wp core download --skip-content --force
更改WordPress網址
您可能需要或想要更改WordPress URL的原因有很多。也許您正在更改域、移動到子域、從www更新到非www、移動檔案,甚至從 HTTP 遷移到 HTTPS。無論情況如何,您都可以輕鬆使用該wp option update
命令。下面是一個例子:
wp option update home 'http://example.com' wp option update siteurl 'http://example.com'
包含詳細資訊的當前外掛列表
要獲取站點上安裝的當前外掛列表,只需使用以下命令。在此示例中,您可以看到我們安裝了Schema和Yoast SEO外掛。它還將返回狀態(活動/停用)、是否有可用更新以及當前版本。
wp plugin list
WP-CLI外掛列表
安裝多個外掛
要安裝多個外掛,您可以簡單地堆積引數。這是一個下載並啟用3個外掛的示例:
wp plugin install advanced-custom-fields jetpack ninja-forms --activate
請注意,外掛名稱來自它們在儲存庫中的名稱。解決這個問題的最簡單方法是訪問他們的頁面並檢視URL或使用wp plugin search searchterm
,它將在終端中為您提供列表。
WordPress外掛庫URL
如果需要,您還可以使用--version
屬性安裝舊版本的WordPress外掛。
wp plugin install wordpress-seo --version=4.8 --activate
更酷的是,您可以從遠端檔案安裝外掛,而不僅僅是在開發外掛或使用高階外掛時很方便的儲存庫。以下命令從儲存庫安裝兩個外掛,一個從Amazon S3伺服器安裝。
wp plugin install advanced-custom-fields jetpack https://d1qas1txbec8n.cloudfront.net/wp-content/uploads/2015/06/23073607/myplugin.zip --activate
停用多個外掛
要停用單個外掛,您可以執行以下命令。
wp plugin deactivate wordpress-seo
要一次停用所有外掛,請執行以下命令。
wp plugin deactivate --all
WP-CLI停用所有外掛
如果您正在解決相容性問題並且只需要一舉停用所有外掛,則上述命令會很方便。然後,您可以返回並一一啟用它們,隨時進行測試。
更新外掛
您還可以手動更新WordPress外掛。下面的例子:
wp plugin update wordpress-seo
WP-CLI手動更新WordPress外掛
資料庫搜尋和替換
僅通過複製貼上資料庫難以搬遷站點的主要原因之一是該資料庫包含序列化陣列。如果您需要http://testsite.com
用http://livewebsite.com
序列化陣列替換所有例項將沒有意義,因為字串計數不匹配。
search-replace
命令首先反序列化陣列,然後執行搜尋和替換,然後重新序列化陣列。您可以使用一個簡單的命令完成此操作:
wp search-replace oldstring newstring
附加引數允許您執行更多操作,包括預覽將使用--dry-run
.
匯出匯入
有兩種使用WP-CLI匯出內容的方法。您可以建立一個XML檔案,就像WordPress匯出工具一樣,或者您可以匯出/匯入原始資料庫。我發現後者在我的日常生活中更有用,它在同步站點時派上用場。
wp db export
這是您建立SQL檔案所需要做的wp db import file.sql
全部工作,並且是您匯入它所需的全部工作。就像一個魅力,只是小心不要覆蓋你需要的任何東西,匯入基本上會轉儲現有的資料庫並使用提供的SQL檔案代替。
管理角色和許可權
WP-CLI 可以使用該wp role
命令輕鬆地為您管理角色。如果您想測試您的外掛如何與自定義角色一起工作,但您實際上並未在外掛中建立角色,那麼這非常酷。
wp role create organizer Organizer wp cap list 'editor' | xargs wp cap add 'organizer' wp cap add 'organizer' 'manage-events'
上面的命令將建立一個新角色(Organizer),將編輯器角色的所有功能新增到它,然後新增一個新功能:管理事件。使用正確的命令,您可以使用 WP-CLI更改您的WordPres密碼。
生成測試資料
我喜歡各種類似faker的功能 – 向您的網站新增可用於測試的虛擬內容的功能。WP-CLI內建了其中的一些功能,這裡有一些功能可以生成使用者、術語和文章。
wp user generate --count=5 --role=editor wp user generate --count=10 --role=author wp term generate --count=12 wp post generate --count=50
管理WP-Cron事件
您可以在WP-CLI中管理WP-Cron事件和/或WordPress Cron作業。例如,以下命令將為您提供當前的cron事件列表。
wp cron event list
wp-cron事件列表
刪除瞬態
您甚至可以使用以下命令刪除和清除一個或所有瞬變。
wp transient delete --all
如果您正在執行multisite,則需要更復雜的命令。預設情況下,該命令僅檢查wp_options
表。它不檢查wp_1_options
,wp_2_options
等等。
wp transient delete --all --network && wp site list --field=url | xargs -n1 -I % wp --url=% transient delete --all
清理wp_options表
wp_options表可以為您的網站上查詢慢倍常見原因歸因於從第三方外掛和主題留下自動載入資料。檢視來自WP Bullet的這篇關於如何使用WP-CLI清理 wp_options表的文章。
刪除WordPress修訂歷史
在大型網站上,WordPress修訂版本可能會很快增加到資料庫中不需要的數千行。您可以使用WP-CLI刪除後期修訂。這是命令的示例:
$ wp post delete $(wp post list --post_type='revision' --format=ids)
WP-CLI刪除WordPress修訂歷史
控制維護模式
從 WP-CLI v2.2.0 開始,您現在可以控制WordPress 站點上的維護模式。例子:
wp maintenance-mode activate wp maintenance-mode deactivate wp maintenance-mode status
使用Elasticsearch索引資料
Elasticsearch是一個開源的全文搜尋引擎。它用於索引資料並以驚人的速度搜尋該資料。您可以使用ElasticPress WP-CLI命令通過SSH執行索引。例子:
wp elasticpress index [--setup] [--network-wide] [--posts-per-page] [--nobulk] [--offset] [--show-bulk-errors] [--post-type]
使用多語言網站
WP-CLI v2.0.0包括一個新的命令系列, wp i18n
供您使用多語言網站的人使用。例如,您可以為WordPress外掛或主題建立POT檔案。
wp i18n make-pot <source> [<destination>] [--slug=<slug>] [--domain=<domain>] [--ignore-domain] [--merge[=<file>]] [--exclude=<paths>] [--skip-js]
請參閱i18n-command文件。
在WooCommerce中使用WP-CLI
與電子商務網站合作?我們建議您檢視Robot Ninja令人驚歎的WP-CLI WooCommerce開發指南,瞭解您可以使用的快速簡便的命令。使用WP-CLI可以生成客戶、訂單列表,甚至建立批量產品。
遠端使用WP-CLI
您可以使用WP-CLI做的最好的事情之一是管理您的遠端WordPress安裝。這確實是網站經理的夢想成真。
要通過SSH在遠端伺服器上無縫執行WP-CLI命令,您以前需要wp-cli-ssh外掛命令。但是從v0.24.0開始,這現在是WP-CLI本身的一部分!
重要提示:您需要在執行命令的計算機和伺服器上安裝WP-CLI。
配置遠端伺服器
您可以全域性或本地配置伺服器。要全域性配置它們,請使用 config.yml
檔案。您還可以使用當前工作目錄中的wp-cli.yml
或wp-cli.local.yml
檔案。
伺服器的配置是這樣工作的,將其貼上到上述檔案之一中:
ssh: staging: cmd: ssh %pseudotty% username@server.com %cmd% url: http://myseite.com path: /www/path/to/site/root
完成所有這些後,您可以鍵入以下命令來更新遠端站點上的WordPress:
wp ssh core update --host=staging
如果您擁有或管理很多網站,我想您會發現這太棒了!該指令碼將要求輸入密碼,但如果您使用RSA金鑰登入,您也可以放棄密碼。看看這篇文章來設定它。
使用Bash指令碼
Bash指令碼通過自動化任務為您節省更多時間。還記得我們需要輸入很多命令來安裝WordPress嗎?您可以使用單個bash指令碼來完成此操作。在目錄中建立一個install.sh
檔案。將我們之前的程式碼貼上到裡面並儲存。
wp core download wp core config --dbname=mydbname --dbuser=mydbuser --dbpass=mydbpass --dbhost=localhost --dbprefix=whebfubwef_ --extra-php <<PHP define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); PHP wp db create wp core install --url=http://siteurl.com --title=SiteTitle --admin_user=username --admin_password=mypassword --admin_email=my@email.com
您現在需要做的就是輸入bash install.sh
,一切都會為您完成,無需使用者干預。如果您管理很多站點,您可以設定所有環境並建立一個bash指令碼,如下所示:
wp ssh core update --host=clientA wp ssh core update --host=clientB wp ssh core update --host=clientC wp ssh core update --host=clientD
當新的WordPress版本問世時,這可以為您節省大量時間!由於您可以使用WP-CLI做任何您喜歡的事情,您甚至可以一次在多個客戶端站點上定期更新主題和外掛。
小結
WP-CLI真的是開發人員和網站管理員的夢想成真。作為開發人員,我們可以快速建立測試站點,新增測試內容並執行各種匯入/匯出魔術。站點管理員可以使用單個命令處理多個站點的站點更新和其他任務。請務必檢視WP-CLI v2發行說明!
如果您還沒有嘗試過WP-CLI,我強烈建議您試一試。還有一堆社羣命令,如WP-CLI-SSH,它們新增了更多強大的功能!如果您遇到問題,請務必檢視WP-CLI常見問題文件。
評論留言