WP-CLI まとめ

まとめ

  • WP-CLI Commands
  • テーマ・カスタム投稿・カスタムタクソノミー作成には scaffold
  • サイトの移転には search-replace
  • パフォーマンス計測には profile

インストールして日本語化する

以降の作業は 以前作成した環境 にて、コンテナ内で作業していることを想定していいます。その場合、--allow-root が必要になるため、適宜追加してください。

language-sh
# インストール
wp core install --url=localhost:8000 --title=Example --admin_user=admin --admin_password=password --admin_email=admin@example.com

# アップデート
wp core update

# 日本語をインストールして有効化
wp language core install ja --activate

# プラグイン wp-multibyte-patch をインストールして有効化
wp plugin install wp-multibyte-patch --activate

# タイムゾーンの設定を Asia/Tokyo に変更
wp option update timezone_string Asia/Tokyo

上記でインストールから日本語化までの手順になります。ここまでは WP-CLI で実行するよりも、init.sql で流すことが多いです。あるいは wp db export したものを wp db import するのもよさそうです。

Scaffolding

テーマ

_s というの WordPress 用のスターターテーマ。

language-sh
# _s のベーステーマを生成
wp scaffold _s <theme-slug>

# 作成したテーマを有効化
wp theme activate <theme-slug>

# _s の SASS を使ったベーステーマを名前をつけて生成して有効化
wp scaffold _s <theme-slug> --theme_name="テーマサンプル" --sassify --activate

カスタム投稿タイプ

language-sh
# カスタム投稿タイプを追加
wp scaffold post-type <post-types> --theme=<theme-slug> --label="カスタム投稿サンプル"

# rewrite rules をリセット
wp rewrite flush

# 投稿タイプの一覧表示
wp post-type list

テーマ名を指定すると標準出力ではなく、指定テーマの post-types にファイルが生成されます。このコマンドはファイルを生成するだけであるため、実行するためには functions.php に以下のようなコードを記述する必要があります。

language-php
require get_template_directory() . '/post-types/<post-types>.php';

そのまま使用すると日本語の場合であっても、複数形の s がついてしまうので修正が必要になります。

カスタムタクソノミー

language-sh
# カスタムタクソノミーを追加
wp scaffold taxonomy <taxonomy-slug> --post_types=<post-types> --theme=<theme-slug> --label="カスタムタクソノミーサンプル"

# タクソノミーの一覧表示
wp taxonomy list

# タームの追加
wp term create <taxonomy-slug> <term> --slug=<term-slug> --description=<description>

# タームの一覧表示
wp term list <taxonomy-slug>

scaffold はテーマ名を指定すると標準出力ではなく、指定テーマの taxonomies にファイルが生成されます。このコマンドはファイルを生成するだけであるため、実行するためには functions.php に以下のようなコードを記述する必要があります。

language-php
require get_template_directory() . '/taxonomies/<taxonomy-slug>.php';

データベース

language-sh
# データの置換
wp search-replace <old> <new>

# 置換されたデータをエクスポート
wp search-replace <old> <new> --export=db.sql

# エクスポート
wp db export

# インポート
wp db import

WordPress の DB ではデータがシリアライズされている可能性があるため、単純な置換ができません。例えば移転などで URL に変更を加える必要がある場合、wp search-replace によって置き換えることができます。

i18n

language-sh
# POT の生成
wp i18n make-pot . <pot>

# PO から翻訳に必要な JSON をエクスポート
wp i18n make-json <po>

パフォーマンス計測

language-sh
# パッケージのインストール
wp package install wp-cli/profile-command

# bootstrap, main_query, template で計測
wp profile stage

# bootstrap の詳細を計測
wp profile stage bootstrap

# bootstrap にある hook の init を計測
wp profile hook init

デフォルトではインストールされていないため、パッケージのインストールが必要になります。

メンテナンスモード

language-sh
# メンテナンスモードを有効にする
wp maintenance-mode activate

# メンテナンスモードを無効にする
wp maintenance-mode deactivate

生成されるファイルは <?php $upgrading = 1594870466; ?> のように現在のタイムスタンプが設定するだけです。そのためコマンド実行から 10 分でメンテナンスモードは自動的に解除されます。

この方法だとメンテナンスモード時のデザイン変更ができそうにないので、利用する機会は少なそうです。