経緯
ローカル環境(macOS Monterey)にWordPressでブログサイトを作ってありました。この度、本番環境(さくらのレンタルサーバ)にWordPressをインストールし、ローカル環境からエスクポートしたDBデータをインポートしました。
しかし、本番環境(Web上のドメイン)でブログサイトを開くと、ローカル環境で用意されていた記事はまったく表示されず、Hello World!の記事が1つ表示されているだけでした。
原因
WordPressではDBのテーブル名に共通の接頭語(例:wp_)を設定できるのですが、phpMyAdminでローカル環境と本番環境のDBをそれぞれ確認したところ、ローカル環境と本番環境でテーブルの接頭語が異なっていました。
例えば、投稿データが保管されるテーブル名がローカル環境では wp_posts
だったのに対し、本番環境では wpXXXXXXposts
となっていました。本番環境では wpXXXXXXposts
が参照されていたため、ローカル環境からエスクポートしたテーブルである wp_posts
の投稿記事が表示されなかったわけです。
どうやら、同じレンタルサーバに複数のWordPressをインストールしても区別できるように、個別の接頭語が自動で割り当てられるようです。
対処方針
さくらのレンタルサーバの場合、テーブルの接頭語はDBを新規作成する際に設定できるようなのですが、私はその項目を気にせずにデフォルト設定のまま手順を進めてしまったのだと思います。。
ローカル環境にデータは残っているので、本番環境にWordPressをインストールするところからやり直しても良いのですが、ちょっと面倒です。。そこでそれは最後の手段として、本番環境でWordPressが参照するテーブルを変更できるか試すことにしました。
(※)以下に方法を記載しますが、保証はできかねます。参考としてご参照のうえ、本番環境を一から作り直す覚悟がある方のみお試しください。
対処方法
本稿で紹介する方法は、以下の条件を前提とします。
- 本番環境のフォルダにFTPソフトでアクセスし、ファイルを編集できること。
- 本番環境のphpMyAdminにログインできること。
- 本番環境のDBに、ローカル環境からエクスポートしたテーブルがインポートできていること。
- 本番環境に複数のWordPressをインストールする予定がないこと。
1. 本番環境のwp-config.phpを編集する。
本番環境でのDBのテーブルの接頭語は、wp-config.php
ファイルに記載されています。FileZillaなどのFTPソフトで本番環境のファイルにアクセスし、$table_prefix = '○○'
の部分を変更します。
私の場合は、$table_prefix = 'wpXXXXXX'
になってしまっていたため、ローカル環境と同じく $table_prefix = 'wp_'
に変更して保存しました。
2. Webサイトを確認する。
ブラウザでWebサイトを開きます。私の場合、ローカル環境からエクスポートした投稿記事が表示されるようになりました。ひとまず参照先の変更はうまくいったようです。
3. 本番環境の管理画面にログインできるか確認する。
念の為、ブラウザのURL入力欄から [Webサイトのドメイン名]/admin
にアクセスし、WordPressの管理画面にログインできるか確認します。私はここでログインできませんでした。
ログイン情報(ユーザ名、パスワード)はローカル環境からエクスポートしたテーブル wp_users
を参照しているようでしたが、ローカル環境のログイン情報を入れても失敗します。そこで、phpMyAdminからパスワードを再設定してログインできるようになりました。再設定の方法については、次のブログ記事が参考になります。
4. 不要なテーブルを削除する。
本番環境にWordPressをインストールした際に作られたテーブル群(私の場合、接頭語が wp
XXXXXX のテーブル群)が残っていますが、参照されていないと思われるので phpMyAdmin の操作ですべて削除しました。
この手順は実行しなくても支障ないのですが、なんとなくDBをスッキリさせたいので試しました。
おわりに
本番環境にインポートした投稿記事が表示されない方は、対処はともかく本稿と同じ原因であることを疑ってDBを確認してみると良いかもしれません。