WordPressでSSL化したときに警告される画像URLやそのほかの過去の情報を一括で置換したいケースがよくあります。
WordPress上の文字列・URLを置換する方法はいくつかありますが、今回は「Database Search and Replace Script in PHP」をつかって、文字列を一括置換する方法を紹介します。
SSLに変換した際に、不完全なSSL通信の場合表示されています。(※)大体のケースが画像のURLがhttp://〜から始まっていることが原因でこのようなMixed Contetsと言う警告が表示されます。
ツールを使ったデータベースの値の変更方法を紹介していますが、間違った操作をすると最悪WordPressが壊れてしまう場合もあります。
本記事は特定の環境下での手順を示した物であり、ご利用の環境によってはこの他にも手順が必要だったりする場合があります。作業は必ずバックアップを取った上で自己責任の元作業を実施してください。
WordPress文字列一括置換方法の概要
まず最初に、今回のWordPress文字列一括置換方法の概要を説明します。
WordPressでは、MySQLというデータベースに投稿情報や設定情報が保存されています。
画像のURLもデータベース上に登録されており、書き換える場合はデータベース上のURLを書き換える必要があります。
MySQL上に登録された画像のURL
データベースに登録された文字列情報を書き換える方法としては、「データベースをSQL文で直接書き換える方法」や「Search Regexなどのプラグインで一括置換する方法」のほか、「今回紹介するDatabase Search and Replace Script in PHP」を使って一括で書き換える方法があります。
このうち、データベースをSQL文で直接書き換える方法は推奨されておらず、また、「Search Regexなどのプラグインで一括置換する方法」についてもContact Form 7などの設定内容が消えてしまう場合があります。
参考)WordPressをhttps化したら、Contact Form 7 の設定が消えてしまった⁉
そこで今回は、URLを置換する方法として「Database Search and Replace Script in PHP」をつかって、文字列を一括置換する方法を紹介します。
あなたのドメイン名またはURLを変更するとき -例: http://example.com/blog から http://example.com 、あるいは http://example.com から http://example.net - 更に心配があります。ファイルやデータベースは移動できます。しかしながら以前のドメイン名や場所への参照がデータベース上に残るでしょう。そして、それがリンクやテーマ表示の問題を引き起こすことがあります。
あなたがURLを変更するためにデータベース全体で検索と置換を実行すると、データシリアライゼーション(変換)で問題を引き起こすことがあります。テーマやウィジェットの中にはURLの長さを示す値を含むものがあるためです。これが変わると壊れます。このようなシリアライゼーション問題を解決する2つの選択肢があります。
- wp_posts テーブル上での検索と置換だけ実行。
- 全データを安全に変更するため、 WordPressデータベース用検索と置換スクリプト を使用(開発者の方は、この選択肢を使用しましょう。下記の15ステップの手続きとは対照的に1ステップの処理です)。
Search-Replace-DB-Masterをサーバーに設置する
今回は「Database Search and Replace Script in PHP」という専用の書き換えツールを利用します。
まずは、下記サイトにアクセスしてください。
Database Search and Replace Script in PHP
ユーザー情報を登録するフォームがありますので入力して送信します。
入力したメールアドレスにダウンロードリンクがありますので、クリックしてダウンロードしてください。
ダウンロードファイル(ZIP)を解凍します。「Search-Replace-DB-Master」というフォルダができます。
解凍したフォルダ「Search-Replace-DB-master」をFTPを利用して、サーバー内のWordPressインストール先(※)に格納します。
(※)エックスサーバーで独自ドメイン直下にWordPressをインストールした場合であれば「ドメイン名/public_html」が相当します。ご自身のレンタルサーバーの環境に合わせてください。
合わせて読みたい記事
FTPを使ったことがない方は「無料FTPツール FileZilla の使い方 Mac・Windows対応」を合わせてご参照ください。
なお、本番のインターネット環境では、第三者がhttp://実際のドメイン/xxxx/Search-Replace-DB-masterにアクセスできると、簡単にデータベース書き換えられてハッキングできてしまいます。
最終的に今回ご紹介する手順が完了したら必ず削除するようにしておきましょう。
Search-Replace-DB-Masterで文字列を一括置換する
次に、Search-Replace-DB-MasterでURL文字列を一括置換していきます。
「https://ドメイン名(WordPressインストールURL)/Search-Replace-DB-Master」にアクセスします。下記のようなツールが表示されます。
(※)通常、WordPressで利用しているMySQLデータベースの接続情報が自動で入力されています。
もし入力されていない場合・データベース接続エラーが出ていて、「Dry Run」や「live Run」がグレーアウトしている場合は今一度接続情報を入力Update Detailsを押して試してみてください。
なお、データベースの接続情報は、ワードプレスインストール先/wp-config.phpで確認することができます。
ここで、変更したい(変更前の)文字列と変更後の文字列を入力します。「dry run」ボタンで実行前の確認ができます。
変更対象のテーブル名とデータ数が表示されます。
(補足)リンクをクリックすると、実際にどこを書き換えるのかを確認することができます。変更する内容が正しいのか正しくないのかあとで目視でチェックしましょう。閉じる場合は「右上の×マーク」で閉じることができます。
確認が完了したら、「live run」ボタンを押下してツールを実行します。
確認ダイヤログが表示されるのでOKボタンを押下します。
文字列データが一括置換(アップデート)されました。
このツールはデータベースの中身を書き換えるツールなので削除しないと簡単にサイトを乗っ取ることができます。必ず本ツールを削除する必要があります。
「delete」ボタンを押下してツールを削除します。
再度、「https://ドメイン名(WordPressインストールURL)/Search-Replace-DB-Master」にアクセスして、アクセスできなくなったことを確認しましょう。
最後に、ブラウザでMixed Contentのエラーがなくなったこと・アドレスバーに鍵マークが表示されていることを確認して完了です。
なお、今回はWordPressで利用しているMySQLデータベースの文字列を一括置換する方法です。WordPressテーマファイル(phpやcss、js)などに直接http://〜と記載しているものは変更されませんので、テーマファイルに直接書き込んでいる場合は、別途手動でhttpsに修正して下さい。
以上で完了です。
まとめ
まとめです。今回は「Database Search and Replace Script in PHP」をつかって、文字列を一括置換する方法を紹介しました。
ただし、今回の手順で間違った操作をすると最悪WordPressが壊れてしまう場合もあります。
本記事は特定の環境下での手順を示したものであり、ご利用の環境によってはこの他にも手順が必要だったりする場合があります。作業は必ずバックアップを取った上で自己責任の元作業を実施してください。
今回は以上になります。最後までご覧いただきありがとうございましたs。
合わせて読みたい記事
WordPressの基本的な使い方を「【総まとめ版】WordPress(ワードプレス)の使い方を徹底解説」にまとめました。WordPressの使い方をしっかり覚えたい方はあわせてご参考ください。
個別指導形式のスクールでは、自分の知りたいことをピンポイントで学習・達成でき、自分で更新もできるというメリットもあります。
教室の無料事前相談もしておりますので、まずはお気軽にご登録ください。
YouTubeチャンネル開設しました!
最大月間50万PVの当ブログをベースに、Youtube動画配信にてWordPress、ホームページ作成、ブログのことについてお役立ち情報を随時配信していきます。
ご興味ある方はぜひチャンネル登録をしていただけますと幸いです。