WP-CLI – 便於工程師管理 WordPress 的工具 | WordPress 技巧

WP-CLI – 便於工程師管理 WordPress 的工具 | WordPress 技巧

今天我要介紹一個很實用的 WordPress 工具,很適合一些開發者常常需要下指令操作的狀況,可以為你節省一些時間,這個工具叫做 WP-CLI。下面的介紹我會介紹一些時常用到的指令集,並做一些解釋。

WP-CLI 是一個由 php 程式語言寫出來的 WordPress 管理指令器,可以操作 WordPress 的安裝、資料庫寫入、設定、抓取資料、更新文章等等所有你想得到的事情,而有些外掛例如 Elementor 頁面編輯器、Woocommerce 電商外掛等等也都有開發 WP-CLI 的指令,讓大家可以透過系統端的操作,不必手動點很多按鈕就可以操作 WordPress。

首先安裝 PHP 程式

不過要使用 WP-CLI 的話,因為他是使用 PHP 語言寫成的東西,當然要事先安裝 PHP 在作業系統才可以使用喔!如果你是使用 Ubuntu 18.04 以上的版本的話,請輸入:

sudo add-apt-repository -y ppa:ondrej/php
sudo apt-get -qq install php7.4 php7.4-common php7.4-dev

這裡我直接使用當前 PHP 最新的版本 7.3。

安裝 WP-CLI 並使用

接著如果你已經架設好 Apache、Caddy 或是 Nginx 等 Web server 的話,以及資料庫 Server 例如 MySQL 或是 MariaDB,先切換到你的網站根目錄下操作,或是在接下來的指令當中加入「–path=」參數指定到你的 WordPress 程式所在地。

如果你是在 root 權限在操作,也請記得加上「–allow-root」,因為 WP-CLI 預設會鎖定不讓 root 帳戶使用,而我個人偏好這個方式;或是在指令前面加入「sudo -u user 」以其他使用者權限執行。

而如果想要讓指令不印出,達成背景操作的話,多加上「–quiet」參數即可。

首先安裝 WP-CLI。

wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -O /usr/local/bin/wp
chmod a+x /usr/local/bin/wp

如果要更新 WP-CLI 的話也是一樣的操作方式。

我個人不建議把 wp-cli.phar 主程式放在「/usr/local/bin/」以外的目錄,我測試好幾次之後,似乎該程式在相對位置上有一些 Bug,會造成執行失敗。

切換到 WordPress 的根目錄之後,開始下載安裝 WordPress。

wp core download --version=5.4 --force --allow-root

這個版本號請參考美國英文版的 WordPress 為主,如果要直接下載其他語言的版本可以多加上「–locale=」,例如日文就是「ja」,繁體中文就是「zh_TW」。不過我個人不建議直接下載繁體中文版,因為繁體中文版官方的版本號只有列出主要大版本號,小改版都沒有列出,會造成安裝上的失敗。

請參考:
1. Releases | WordPress.org

接著我們要把 WordPress 的資訊直接寫入資料庫。這裡你需要備齊資料庫登入的帳號密碼,資料庫名稱(這些請事先在資料庫裡面建立好)。另外加入資料庫前綴的資訊「–dbprefix=」,這個可以自行輸入,但關係到安全性,不要隨便外露。

wp core config --dbname=databasename --dbuser=youraccountinmysql --dbpass=passwdofyouraccountinmysql --dbhost="localhost" --dbprefix="wp_" --allow-root --force --extra-php <<PHP
//*<em>insert your code</em>//
PHP

而後面的「–extra-php <<PHP」可以讓你在 wp-config.php 事先插入你需要的設定,最後記得換行後用「PHP」做結尾。

接著正式把資料寫入資料庫當中。這裡需要你的一些網站資訊,像是「網站網址」(url),注意後面不需要「/」結尾,會造成錯誤。WordPress 的使用者名稱和密碼、你的 Email。

wp core install --url="https://www.example.com" --admin_user=wpaccount --admin_password=passwdofwpaccount --admin_email=youremail --allow-root

這裡要提醒一下,「wp db create –allow-root」指令在這裡就不需要了,因為會自動創建好 WordPress 的資料表並寫入資料進去資料庫裡面。

另外,如果你的 WordPress 後台網址(WordPress siteurl)和網站的根目錄(website url)不同,請記得更新一下設定。

wp option update siteurl "https://www.example.com/wpwhereat" --allow-root

記得這裡的網站後台網址要加入「 “” 」雙引號才不會出錯。

安裝完成之後,接著就安裝繁體中文的語言包到 WordPress 裡面,請記得加上「–activate」參數在安裝完成繁體中文套件包之後直接啟用。所以在一開始時雖然是安裝英文版的 WordPress,但是可以在這裡切換,避免掉安裝的錯誤。

wp language core install zh_TW --activate --allow-root

如過要更新 WordPress 的話,給他下更新指令。

wp core update --allow-root

安裝刪除佈景主題和外掛

另外是安裝或刪除外掛或佈景主題的指令。如果是外掛,請輸入:

wp plugin install wp-file-manager --activate --allow-root

加入「–activate」的話,會在安裝完外掛之後啟用外掛。不要啟用外掛就去除掉即可。

如果要從本地來源的 zip 檔案安裝,則可以這樣寫:

wp plugin install /path/to/plugin.zip --activate --allow-root

刪除外掛的話就這樣做。

wp plugin delete akismet --allow-root

這些外掛的名稱,如果不確定的話,可以到「wp-content/plugins」裡面看各個外掛資料夾的名稱就知道了,或是可以下「wp plugin search」指令查詢。

而佈景主題的話,跟外掛基本上是一樣的概念。刪除就像是這樣子。

wp theme delete twentyseventeen --allow-root

安裝的話就像是這樣子。

wp theme install twentyseventeen --activate --allow-root

也可以是 zip 檔案。

wp theme install /path/to/theme.zip --activate --allow-root

加入「–activate」的話,會在安裝完外掛之後啟用佈景主題。不要啟用佈景主題就去除掉即可。

另外另外,佈景主題如果你有打算要做自訂的動作,在安裝完並啟用佈景主題之後,可以這樣子設定。

wp scaffold child-theme childtheme --parent_theme=basetheme --author=you --allow-root

如果要更新所有外掛、佈景主題、WordPress 核心程式的語言套件,可以下這個指令。

wp language core update --allow-root

更改 wp-config.php 的設定或是 WordPress 設定

接著,我們可能想要更新一些 wp-config.php 當中的設定,可以使用「wp config set key 」指令做到。例如我們想要讓 Debug 模式啟動的話。

wp config set WP_DEBUG true --raw --allow-root

結果會在「wp-config.php」寫入這一行。而預設的 wp-config.php 裡面會寫入「define(‘WP_DEBUG’, false);」,但是加入「–raw」參數的話,不管這一行的狀況是被註解還是已經存在,都會強迫更新成下面這樣子。

define('WP_DEBUG', true);

如果是要更改到資料庫裡面的資料,要改變「options」的話,可以用這個指令「wp option update」。例如要更新時區成為台北的話。

wp option update timezone_string "Asia/Taipei" --allow-root

如果是更改文章的網址結構,可以這樣下命令。

wp rewrite structure '%postname%' --allow-root

登入 WordPress 後,讓觀看網站時的上方控制列(admin bar)消失。

wp option update show_admin_bar_front false --allow-root

至於大家一定會有一些疑問,這些要更新變更的 key 值要去哪裡找呢?其實是按照資料庫裡面每筆資料「meta_key」命名的方式去對應的喔!所以去資料庫找「meta_key」,來更新對應的「meta_value」。

取代字串

wp search-replace 'oldstring' 'newstring' --allow-root

常常用在更新網址的時候。

媒體資源操作

重新產生圖片壓縮檔案應用於響應式網頁的話。

wp media regenerate --yes --allow-root

如果不想要刪除舊圖片的話加上「–skip-delete」參數吧。

如果想要從該主機上匯入圖片。

wp media import /path/to/image.jpg --allow-root

建立或是更新文章

最後一個主要的部分,我想大家會關心「頁面」(Pages)和「文章」(Articles)的內容、標題等等。如果是創建文章的話:

wp post create --post_type='page' --post_title="Home" --post_status="publish" --allow-root

記得加入「–post_status」參數,設定文章的狀況為發佈(publish)。

至於其他文章的發布模式請參考如下。

1. Post Status | WordPress.org

如果是更新文章內容。

wp post update 1 --allow-root --post_title="your title" --post_content="your content"

這裡你要知道文章的數字編號是多少才能操作。

WP-CLI 是可以擴充的

其實指令還有很多,這裡只是列出一些常用到的東西,而且有各種的排列組合,我無法一一都列出所有的作用,如果要查詢,可以用官方文件或是他們在 Github 上面的專案。

請參考:
1. WP-CLI | Developers-WordPress.org
2. WP-CLI | Developers-WordPress.org
3. WP-CLI | Github

WP-CLI 指令集是由各個專案組合在一起的套件指令庫,因此是可以擴充或部分更新的,但通常只需要知道怎麼操作就好。但有遇到問題的話,請盡量到各個 WP-CLI 小專案裡面發表 issue。

請參考:
1. wp (cache|transient) *
2. wp checksum *
3. wp config *
4. wp core *
5. wp cron *
6. wp db *
7. wp embed *
8. wp (eval|eval-file)
9. wp export
10. wp (option|post|comment|user|term|site) *
11. wp i18n
12. wp import
13. wp language
14. wp media *
15. wp package *
16. wp (plugin|theme) *
17. wp rewrite
18. wp (role|cap) *
19. wp scaffold *
20. wp search-replace
21. wp server
22. wp shell
23. wp super-admin *
24. wp (widget|sidebar) *

而一些公司會個人開發的外掛也有提供 WP-CLI 操作指令庫,但是這個要再安裝他們的外掛之後才能使用。

請參考:
1. Elementor 外掛:Elementor | WP-CLI
2. WP Rocket 外掛:WP Rocket | WP-CLI
3. WP Redis 外掛:WP Redis | WordPress 外掛 | WordPress.org
4. Woocommerce 外掛:Woocommerce | WordPress 外掛 | WordPress.org
參考資料:

常用指令整理
1. wp-cli コマンド一覧 - Qiita
官方文件
2. Installing – WP-CLI — WordPress
3. wp core download | WordPress Developer Resources

稍微詳細的操作過程
4. [WordPress] WP-CLI 常用初始化專案的指令 | 一介資男
5. WP-CLIの使い方
6. Install WordPress Using WP-CLI on Ubuntu 18.04
7. Automated WordPress Installation With Bash - WP CLI | Indigo Tree