WordPressの固定ページやカテゴリを、本番とローカルの両方で同じ構成にしたいなら、wp-adminで2回クリック作業をするのではなくWP-CLIを使うのがおすすめです。本番の構成をコマンドで取得して、ローカルで同じコマンドを実行するだけで、ID単位まで一致した構成を再現できます。これを知らずに「8ページ+3カテゴリを2回手作業で作る」つもりでいたので、知った瞬間に作業時間がかなり変わりました。
背景
WordPressのサイト構成(固定ページ8つ・カテゴリ3つ)を進める中で、本番(Xserver)で先に作った構成を、ローカルのDocker環境にも再現する必要がありました。最初は両方の管理画面を見比べながら同じものを手作業で作るつもりでしたが、これは二重作業だなと感じてAIに相談したところ、WP-CLIというWordPress公式のコマンドラインツールの存在を教えてもらいました。
WP-CLIとは
WordPressをブラウザのwp-admin画面からではなく、コマンドラインから操作できる公式のツールです。投稿・固定ページの作成、カテゴリの作成、オプション値の取得・更新など、wp-adminでできることの多くがコマンド1つで実行できます。
Xserverには標準でWP-CLIが入っていたので、SSH接続してそのまま使えました。一方、Dockerの公式wordpressイメージには入っていなかったので、コンテナ内に一時的にインストールしてから使いました。
docker compose exec -T wordpress bash -c "curl -sO https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar && chmod +x wp-cli.phar && mv wp-cli.phar /usr/local/bin/wp"
docker compose exec -T wordpress wp --info --allow-root
本番の構成をコマンドで取得する
まず本番(Xserver)にSSH接続して、固定ページとカテゴリの一覧をコマンドで取得しました。
ssh -i <鍵> -p <ポート> <ユーザー>@<ホスト>
cd ~/<ドメイン>/public_html
wp post list --post_type=page --fields=ID,post_title,post_name,post_parent,post_status
wp term list category --fields=term_id,name,slug
ブラウザでページ一覧を1つずつ確認しながらメモするのではなく、タイトル・スラッグ・親子関係・IDが一覧で出てくるので、構成を把握するだけでもかなり楽になりました。
ローカルで同じ構成を再現する
取得した情報をもとに、ローカル側でも同じ内容のページ・カテゴリをコマンドで作成しました。
wp post create --post_type=page --post_title="アプリ一覧ページ" --post_name=apps --post_status=draft
wp post create --post_type=page --post_title="そらログLP" --post_name=soralog --post_parent=<appsのID> --post_status=draft
wp term create category "技術系" --slug=tech
ホームページの表示設定も、コマンドで確認・反映できます。
wp option get show_on_front
wp option get page_on_front
wp option update show_on_front page
wp option update page_on_front <ページID>
ちなみにこの作業の途中で、計画段階で決めていたURL構造(/apps/soralog/という親子関係のある階層)と、実際に本番で作っていたページの構造(親子関係のないapps-soralogという1階層のスラッグ)がズレていることにも気づきました。本番の構成をコマンドで一覧表示したからこそ気づけたミスで、これもWP-CLIで修正できました。地味にラッキーだったなと。
どこまでWP-CLIに頼るか
固定ページ・カテゴリの作成は、一度作ったらそれで終わりの作業です。なので、すべてをスクリプト化して本番・ローカル両方で同じスクリプトを実行する完全自動化までは今回はしませんでした。「本番の構成をローカルに複製する」という一点でだけ使う、ワンショットの使い方に留めています。日常的に繰り返す作業ではないものまで仕組み化すると、それ自体の保守コストの方が大きくなるかなと判断したためです。
まとめ
WordPressはwp-adminの画面操作だけのツールだと思われがちですが、WP-CLIを使えば、本番とローカルの構成を一致させるような「同じ作業を2回やりたくない」場面でかなり力を発揮します。Xserverのような共用ホスティングでは標準でWP-CLIが使えることも多いので、まだ使ったことがない方は一度wp post listあたりから試してみるのをおすすめします。
よくある質問
WP-CLIはどの環境でも使えますか?
WordPress公式のツールですが、ホスティング側でSSH経由のシェルアクセスが許可されている必要があります。共用ホスティングによっては利用できない場合もあるので、契約しているサービスの仕様を確認してください。
Dockerの公式wordpressイメージにWP-CLIは最初から入っていますか?
僕が使った範囲では入っていませんでした。wp-cli.pharをダウンロードしてコンテナ内にインストールする必要がありました。
本番とローカルの構成を完全に自動で同期する仕組みは作りましたか?
今回は作っていません。固定ページ・カテゴリ作成は一度きりの作業だったため、その場で使うワンショットのコマンド実行に留めています。


コメント