📘

wordpress用cliコマンド「WP-CLI」が結構便利

に公開

はじめに

業務でwordpressのドメイン変更をすることになりました。(5環境ほど)
wordpressはほとんど触ったことなかったのですが、ドメイン変更作業の大変さはなんとなく聞き及んでいました。
DB開いてSQL叩いて・・・みたいな作業がいくつもあるのかと思うと軽く絶望していたのですが、wordpressにはcliコマンドがあることがわかりました。
それを活用してみたところ、大変便利で簡単にドメイン変更ができたので、備忘録としてまとめました。

WP-CLIについて

ここにだいたいのことが書かれています。
インストール方法も以下を参照してください。

https://wp-cli.org/ja/

DB操作

$ wp db search "検索したい値"

wordpressのDBの中から、任意の値を検索します。
値だけを入力して、全テーブルから検索結果を出力します。
テーブル名とカラム名、テーブルのIDにヒットした値が出力されます。
適当に値を調べたい時、DBに入ってクエリを叩かなくていいので楽です。

wp db query

$ wp db query 'show columns from wp_options'

Field	Type	Null	Key	Default	Extra
option_id	bigint unsigned	NO	PRI	NULL	auto_increment
option_name	varchar(191)	NO	UNI
option_value	longtext	NO		NULL
autoload	varchar(20)	NO	MUL	yes

DBに入らずともクエリを実行できます。
適当にselectする分には大変便利ですが、update処理では積極的に使うのは躊躇います。

wp search-replace

$ wp search-replace '置換対象' '置換後の値'

ドメイン変更作業で一番役に立ったコマンドです。このコマンドだけ覚えていただければ大丈夫です。
これを実行するとDBにあるヒットした値はすべて置き換わります。

オプション

安全に実行するためにはこれらのオプションを併用したいです。

  • --all-tables
    上記のコマンドだけだと一部のプラグインのテーブルまで置換ができないので、このオプションをつけます。
    それでも反映されない場合もある。。。
  • --skip-columns=該当のカラム名
    置換対象ではないカラム名をここに書きます。
    仕様がちょっとわからないのですが、全テーブルのうちから指定したカラム名のみ置換対象外とするらしいです。
    テーブル指定ができるかどうかは未検証です。
    今回はguidを指定しました。guidを置換してしまうと既存記事にも関わらず新規記事であるとRSSが反応してまうので、guidは積極的に置換しないほうがいいそうです。
  • --dry-run
    実際に置換実行する前に、dry-runで実行計画を立てたい時に使います。
    dry-runしてみると、置換予定のデータが数千に及んだりするのでちょっとびっくりします。

プラグイン操作

wp plugin list

$ wp plugin list
+-----------------------------+--------+-------------+---------+----------------+-------------+----------+--------------+
| name                        | status | update      | version | update_version | auto_update | requires | requires_php |
+-----------------------------+--------+-------------+---------+----------------+-------------+----------+--------------+
| all-in-one-seo-pack         | active | none        | 4.8.7   |                | off         |          |              |
+-----------------------------+--------+-------------+---------+----------------+-------------+----------+--------------+

wordpressで登録しているプラグインの一覧を出力します。
管理画面にログインせずともプラグインを確認できます。

wp plugin activate(deactivate)

$ plugin activate "プラグイン名"
$ plugin deactivate "プラグイン名"

プラグインの有効・無効をcliから設定できます。

おわりに

cliコマンドのおかげで工数が大幅に短縮できました。ほかにもいろいろ便利そうなコマンドがあったので、もし今後のwordpressの対応があったら積極的に使用したいです。
wordpressのcliコマンドはphpでできているっぽいので、wordpressがFatal Errorだったりすると使えなくなりますので、その点はご注意を。

Discussion