Elementorで作成したサイトでよくあるのが、グローバルメニューとかを自作していているケース。
その場合、リンク先の指定がドメイン直書きだったりします。
こういう直書きされたドメイン名は、All on One Migrationなどのサイト移転ツールでは新しいドメインに置換されないようです。
ドメイン変更したドメイン名を置換するには?
search-regexプラグインを使う
サイト移転のURL置換でよく使われるのが、search-regexです。
search-regexプラグインは使うとエラーが出ます
このプラグインは既に更新されなくなって久しいですが未だによく使われています。そしてインストールするとPHPのバージョン7.2だとエラーが出たりします。
プラグイン Search Regex を使うと、
「サイトで技術的な問題が発生しています」という件名で以下のようなエラーメッセージが記されたメールが届きます。
Uncaught Error: Call to undefined method SearchRegex::base_url() in /sample.com/public_html/wp-content/plugins/search-regex/view/results.php:26
search-regexプラグインではElementorのページは置換できません
ElementorのサイトでAll on One Migrationで置換されなかったURLをsearch-regexで置換すると、プラグイン上は置換は成功します。しかし、そもそも検索できない部分があるようで、置換したいところをすべてを置換できないようです。
おそらく、記事や固定ページを対象としてるので、データベース全てが検索対象になっていないのではないかと思います。
search-and-replace-for-wordpress-databasesを使う
データベースの置換で検索すると出てくるのがSearch and Replace for wordpress databaseの紹介記事です。
Search and Replace for wordpress databaseはプラグインではありません
WordPress公式でも紹介されているツールということで、Search and Replace for wordpress databaseは決定版なのでは?と思う人も多いと思いまうが、実はプラグインではないというオチでした。
Search and Replace for wordpress databaseはインストールするのが大変です
別にプラグインじゃなくても良いのですが、サーバーにzipファイルを展開してアップロードするという時点でFTPアカウントが想定されている点や、サーバーの制限からできない人も多いと思います。
ということで、良さそうだけど導入のハードルが高いのでパスしました。
(おススメ)wp-migrate-dbプラグインを使う
Search Regexプラグインが無力だと知ったときに吐き気がしましたが、半ばあきらめかけていたところで見つけたのが、wp-migrate-dbというプラグインです。
説明
WP Migrate DBは、データベースをMySQLデータダンプ(phpMyAdminと同様)としてエクスポートし、URLとファイルパスの検索と置換を行い、シリアル化されたデータを処理してから、SQLファイルとしてコンピューターに保存できます。
データベースの移行を完了するには、データベース管理ツール(phpMyAdminなど)を使用してSQLファイルをデータベースにインポートし、既存のデータベースを置き換えます。本番サイトからローカルインストールに新しいデータを移行するか、ローカルで開発したサイトをステージングサーバーまたは本番サーバーに移行する必要がある開発者に最適です。
WP Migrate DBは、シリアル化されていないデータ(配列とオブジェクトの両方)を処理し、データのシリアル化を解除して、文字列を特定し、それらに対して検索と置換を実行します。すべてのデータが処理されると、再びシリアル化され、データベースに戻されます。
DB全体を対象にシリアル化して置換できるのがGood
もともとデータベースを置換しながらバックアップしてエクスポートするためのプラグインのようでしたが、Find & Replaceにも対応しています。
このような無差別にデータベースを置換するタイプであれば、Elementorのサイトでも置換できるはずです。そもそも、Wordpressはデータベースにしか情報が入っていませんので、データベース内部を置換すれば必ずサイトに反映されるからです。
wp-migrate-dbは、search-regexと違って検索&置換に時間がかかりますので、その点からも動きが本格的です。
Elementorのサイトでwp-migrate-dbでFind & Replaceを実行したところ、マジで置換できました!
とても救われました。
というのも、Elementorの修正は編集画面でいちいち編集して直すと時間がかかります。とても編集画面が重いので非力なサーバーではやってられないからです。
wp-migrate-dbは正規表現とかに対応していないと思いますが、ドメイン変更などは単純な置き換えなので正規表現は必要ナッシング。
wp-migrate-dbをAll in One Migrationと一緒に使うと威力倍増
wp-migrate-dbはとても破壊力があるので、すべてを失うかもしれません。そんな時に必要なのはバックアップです。
バックアップを取って、気軽にリストアできるとしたら怖いものなどありません。
ですので、私は、All in One Migrationでバックアップして問題あればリストアできる環境でwp-migrate-dbを使用します。
データベースのバックアップに特化したUpdraft Plusも無料なので便利です。
WordPressのバックアップというのは、データベースとwordpressインストール時から追加されたファイルだけあればよい。
つまり、外部から追加したファイルとデータベースだけあればOKです。
WordPress公式でおススメされているURL書き換えプラグイン
WordPress公式でおススメされているURL書き換えプラグインは以下の2つです。
- Velvet Blues Update URLs
- Better Search Replace
Velvet Blues Update URLs
説明
WordPress Webサイトを新しいドメイン名に移動すると、ページへの内部リンクと画像への参照が更新されません。これらのリンクと参照は古いドメイン名を指したままです。このプラグインは、Webサイトの古いURLとリンクを変更するのを支援し、この問題を修正します。
特徴:
- ユーザーは、コンテンツ、抜粋、またはカスタムフィールドに埋め込まれたリンクの更新を選択できます
- ユーザーは添付ファイルのリンクを更新するかどうかを選択できます
- 更新されたアイテムの数を表示する
(おススメ)Better Search Replace
これは良さそうなプラグインです。
置換前にテストできるのも優れていますし、インターフェースもわかりやすいです。
前述のSearch and Replace for wordpress databaseをベースに作られているとかいないとか。
説明
WordPressサイトを新しいドメインまたはサーバーに移動する場合、すべてが正常に機能するにはデータベースで検索/置換の必要性があります。このタスクに使用できるプラグインはいくつかあります。このプラグインは、これらのプラグインから最高の機能を統合し、次の機能を1つのシンプルなプラグインに組み込みました。
- すべてのテーブルのシリアル化サポート
- 特定のテーブルを選択する機能
- 「ドライラン」を実行して、更新されるフィールドの数を確認する機能
- WordPressの実行中のインストール以外にサーバー要件はありません
- WordPressマルチサイトサポート
まとめ
Elementorはとても便利なので、Wordpress本来の機能を無視してWixのようにいたる所でURLを直書きしたブロックをベタベタ張りまくる人が多いと思います。
そういうサイトはドメイン変更時に苦労します。
URLリダイレクトしてしまえばよいじゃないか?と言う話もありますし、それでもいいと思います。
今回は、データベースを直接検索して置換するという荒業を使ったように思えるかもしれませんが、普通のサイト移転では当たり前のように行われていることです。
Search regexで期待した結果が得られず、もうダメだと思った時には、wp-migrate-dbやBetter Search Replaceで一網打尽にするというチョイスもあるというお話でした。
WordPressの本質はデータベースであることを理解すると、視野が広がりますし、困ったときの対処方法も見えてきます。