WP-CLI v2 – 通過終端管理WordPress

WP-CLI v2 – 通過終端管理WordPress

在其生命的大部分時間裡,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的步驟如下,依次發出這三個命令:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
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
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後跟命令和子命令,後跟必需和可選引數,如下所示:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp command subcommand requiredparam --optionalparam --optionalparam2=value
wp command subcommand requiredparam --optionalparam --optionalparam2=value
wp command subcommand requiredparam --optionalparam --optionalparam2=value

讓我們安裝一個主題,看看它是如何與真實命令配合使用的:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp theme install twentyseventeen --activate
wp theme install twentyseventeen --activate
wp theme install twentyseventeen --activate

這將在您的 WordPress 安裝中安裝並啟用二〇一七主題。

請注意,WP-CLI將與您當前在終端中的WordPress安裝一起使用。如果您切換目錄以轉到另一個WordPress安裝,它將適用於該安裝。

有用的例子

簡而言之,這就是WP-CLI!雖然您可以執行一些高階操作(我們稍後會介紹),但您已經掌握了足夠的知識,可以開始並執行所需的任何操作。我建議檢視命令列表,嘗試其中的一些。我們將在這裡看一些有用的東西,然後繼續通過SSH使用WP-CLI和使用bash指令碼。

安裝WordPress

我經常使用WP-CLI來設定測試環境,第一步是vanilla安裝。這是我執行的命令列表:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
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
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核心。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp core download --skip-content --force
wp core download --skip-content --force
wp core download --skip-content --force

更改WordPress網址

您可能需要或想要更改WordPress URL的原因有很多。也許您正在更改域、移動到子域、從www更新到非www、移動檔案,甚至從 HTTP 遷移到 HTTPS。無論情況如何,您都可以輕鬆使用該wp option update命令。下面是一個例子:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp option update home 'http://example.com'
wp option update siteurl 'http://example.com'
wp option update home 'http://example.com' wp option update siteurl 'http://example.com'
wp option update home 'http://example.com'
wp option update siteurl 'http://example.com'

包含詳細資訊的當前外掛列表

要獲取站點上安裝的當前外掛列表,只需使用以下命令。在此示例中,您可以看到我們安裝了Schema和Yoast SEO外掛。它還將返回狀態(活動/停用)、是否有可用更新以及當前版本。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin list
wp plugin list
wp plugin list

WP-CLI外掛列表

WP-CLI外掛列表

安裝多個外掛

要安裝多個外掛,您可以簡單地堆積引數。這是一個下載並啟用3個外掛的示例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin install advanced-custom-fields jetpack ninja-forms --activate
wp plugin install advanced-custom-fields jetpack ninja-forms --activate
wp plugin install advanced-custom-fields jetpack ninja-forms --activate

請注意,外掛名稱來自它們在儲存庫中的名稱。解決這個問題的最簡單方法是訪問他們的頁面並檢視URL或使用wp plugin search searchterm,它將在終端中為您提供列表。

WordPress外掛庫URL

WordPress外掛庫URL

如果需要,您還可以使用--version屬性安裝舊版本的WordPress外掛。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin install wordpress-seo --version=4.8 --activate
wp plugin install wordpress-seo --version=4.8 --activate
wp plugin install wordpress-seo --version=4.8 --activate

更酷的是,您可以從遠端檔案安裝外掛,而不僅僅是在開發外掛或使用高階外掛時很方便的儲存庫。以下命令從儲存庫安裝兩個外掛,一個從Amazon S3伺服器安裝。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin install advanced-custom-fields jetpack https://d1qas1txbec8n.cloudfront.net/wp-content/uploads/2015/06/23073607/myplugin.zip --activate
wp plugin install advanced-custom-fields jetpack https://d1qas1txbec8n.cloudfront.net/wp-content/uploads/2015/06/23073607/myplugin.zip --activate
wp plugin install advanced-custom-fields jetpack https://d1qas1txbec8n.cloudfront.net/wp-content/uploads/2015/06/23073607/myplugin.zip --activate

停用多個外掛

要停用單個外掛,您可以執行以下命令。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin deactivate wordpress-seo
wp plugin deactivate wordpress-seo
wp plugin deactivate wordpress-seo

要一次停用所有外掛,請執行以下命令。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin deactivate --all
wp plugin deactivate --all
wp plugin deactivate --all

WP-CLI停用所有外掛

WP-CLI停用所有外掛

如果您正在解決相容性問題並且只需要一舉停用所有外掛,則上述命令會很方便。然後,您可以返回並一一啟用它們,隨時進行測試。

更新外掛

您還可以手動更新WordPress外掛。下面的例子:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp plugin update wordpress-seo
wp plugin update wordpress-seo
wp plugin update wordpress-seo

WP-CLI手動更新WordPress外掛

WP-CLI手動更新WordPress外掛

資料庫搜尋和替換

僅通過複製貼上資料庫難以搬遷站點的主要原因之一是該資料庫包含序列化陣列。如果您需要http://testsite.comhttp://livewebsite.com序列化陣列替換所有例項將沒有意義,因為字串計數不匹配。

search-replace命令首先反序列化陣列,然後執行搜尋和替換,然後重新序列化陣列。您可以使用一個簡單的命令完成此操作:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp search-replace oldstring newstring
wp search-replace oldstring newstring
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命令輕鬆地為您管理角色。如果您想測試您的外掛如何與自定義角色一起工作,但您實際上並未在外掛中建立角色,那麼這非常酷。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp role create organizer Organizer
wp cap list 'editor' | xargs wp cap add 'organizer'
wp cap add 'organizer' 'manage-events'
wp role create organizer Organizer wp cap list 'editor' | xargs wp cap add 'organizer' wp cap add 'organizer' 'manage-events'
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內建了其中的一些功能,這裡有一些功能可以生成使用者、術語和文章。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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 user generate --count=5 --role=editor wp user generate --count=10 --role=author wp term generate --count=12 wp post generate --count=50
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事件列表。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp cron event list
wp cron event list
wp cron event list

wp-cron事件列表

wp-cron事件列表

刪除瞬態

您甚至可以使用以下命令刪除和清除一個或所有瞬變。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp transient delete --all
wp transient delete --all
wp transient delete --all

如果您正在執行multisite,則需要更復雜的命令。預設情況下,該命令僅檢查wp_options表。它不檢查wp_1_optionswp_2_options等等。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp transient delete --all --network && wp site list --field=url | xargs -n1 -I % wp --url=% transient delete --all
wp transient delete --all --network && wp site list --field=url | xargs -n1 -I % wp --url=% transient delete --all
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刪除後期修訂。這是命令的示例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ wp post delete $(wp post list --post_type='revision' --format=ids)
$ wp post delete $(wp post list --post_type='revision' --format=ids)
$ wp post delete $(wp post list --post_type='revision' --format=ids)

WP-CLI刪除WordPress修訂歷史

WP-CLI刪除WordPress修訂歷史

控制維護模式

從 WP-CLI v2.2.0 開始,您現在可以控制WordPress 站點上的維護模式。例子:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp maintenance-mode activate
wp maintenance-mode deactivate
wp maintenance-mode status
wp maintenance-mode activate wp maintenance-mode deactivate wp maintenance-mode status
wp maintenance-mode activate
wp maintenance-mode deactivate
wp maintenance-mode status

使用Elasticsearch索引資料

Elasticsearch是一個開源的全文搜尋引擎。它用於索引資料並以驚人的速度搜尋該資料。您可以使用ElasticPress WP-CLI命令通過SSH執行索引。例子:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp elasticpress index [--setup] [--network-wide] [--posts-per-page] [--nobulk] [--offset] [--show-bulk-errors] [--post-type]
wp elasticpress index [--setup] [--network-wide] [--posts-per-page] [--nobulk] [--offset] [--show-bulk-errors] [--post-type]
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檔案。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp i18n make-pot <source> [<destination>] [--slug=<slug>] [--domain=<domain>] [--ignore-domain] [--merge[=<file>]] [--exclude=<paths>] [--skip-js]
wp i18n make-pot <source> [<destination>] [--slug=<slug>] [--domain=<domain>] [--ignore-domain] [--merge[=<file>]] [--exclude=<paths>] [--skip-js]
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.ymlwp-cli.local.yml檔案。

伺服器的配置是這樣工作的,將其貼上到上述檔案之一中:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
ssh:
staging:
cmd: ssh %pseudotty% username@server.com %cmd%
url: http://myseite.com
path: /www/path/to/site/root
ssh: staging: cmd: ssh %pseudotty% username@server.com %cmd% url: http://myseite.com path: /www/path/to/site/root
ssh:
staging:
cmd: ssh %pseudotty% username@server.com %cmd%
url: http://myseite.com
path: /www/path/to/site/root

完成所有這些後,您可以鍵入以下命令來更新遠端站點上的WordPress:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp ssh core update --host=staging
wp ssh core update --host=staging
wp ssh core update --host=staging

如果您擁有或管理很多網站,我想您會發現這太棒了!該指令碼將要求輸入密碼,但如果您使用RSA金鑰登入,您也可以放棄密碼。看看這篇文章來設定它。

使用Bash指令碼

Bash指令碼通過自動化任務為您節省更多時間。還記得我們需要輸入很多命令來安裝WordPress嗎?您可以使用單個bash指令碼來完成此操作。在目錄中建立一個install.sh檔案。將我們之前的程式碼貼上到裡面並儲存。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
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
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指令碼,如下所示:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wp ssh core update --host=clientA
wp ssh core update --host=clientB
wp ssh core update --host=clientC
wp ssh core update --host=clientD
wp ssh core update --host=clientA wp ssh core update --host=clientB wp ssh core update --host=clientC wp ssh core update --host=clientD
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常見問題文件

評論留言