WordPressのインポートツール「添付ファイルのインポート」で勘違いをしていた

WordPressのインポートツールで表示される、「添付ファイルをダウンロードしてインポートする」を、間違った自己解釈をしていたのでメモ。忘備録のために以下に綴りますが、色々試した結果としては「言葉の通り」でした。

そもそも「添付ファイル」とは

WordPressで記事を書くとき、画像を表示させたいという場合、「メディア」を使用し画像ファイルを選択します。

メディアを使用しファイルをアップロード・認識させると「記事に添付できるファイル」という扱いになり、ファイル名やサイズなどの情報がデータベースへ登録されます。

このデータベースの情報が、XMLファイルにズラーッと書かれています。

なので、インポートツールの指している「添付ファイル」は、「メディアに登録されているファイル」ということになります。

どの画像をどの記事に添付したというのもデータベースに保管されます。

メディアに登録されていて記事で使用していないファイルもWordPressで管理されています。なので問題なくインポートされます。

対して、FTPで上げた画像をURLで指定して表示する時はメディアを使用しません。WordPressからしてみると、ただの画像ファイルのリンクになり、何の管理もされない記事データの中の1文にしかすぎません。

やりたかった事

MAMPを使用してMacの中に構築したテスト環境のWordPressを、本番環境と同じ状態にしたい。なるべくお手軽、簡単に。

トライした行動

1:レンタルサーバーで運用している、本番環境のWordPressの管理メニューにある、「エクスポート」からXMLファイルを出力してダウンロード。

2:テスト環境のMACのWordPressでXMLファイルをインポートする前に、以下を本番環境に合わせた。

  • パーマリンクを合わせる
  • メディア設定を合わせる
  • テーマファイルを合わせる
  • 画像データが入ったフォルダを同じ場所に置いておく

3:XMLファイルをインポートツールでインポート。

4:画像データは、本番環境と同じ位置に置いたので「添付ファイルのインポート」のチェックをOFFにして実行

結果

1:画像がインポートできなかったエラーが大量に出る。

2:記事データは問題なくインポートされたが、画像はメディアライブラリに1枚も登録されない、アイキャッチ(サムネイル)が消失。

3:ドメインの変更はツールが自動で行なってくれる、

  • 本番環境(http://blue-leaf81.net/)
  • テスト環境(http://localhost:8888/wordpress/)

そのため記事の中でURL指定している画像に関しては、同じ位置に置いてあるので表示される。

問題点は、メディアの登録とアイキャッチ。

テストで使うので、この2つは気にしなくていいかなと思いましたが、気になったのでインポートを数パターン試してみました。

色々と試してみた結果の「添付ファイルのインポート」の動き

試したパターンと結果をズラズラ書いてもしょうがないので、覚えておきたい結果だけ綴ります。

添付ファイルをダウンロードしてインポートする

ドメイン変更あり

  • 元のサイト:「http://blue-leaf81.net/
  • 引越し先:「http://localhost:8888/wordpress/

「添付ファイルのインポート」をONにして実行すると、XMLファイルに記載されているサイト(元のサイト)へ画像ファイルなどの添付ファイルをダウンロードしに行く。

ダウンロードしてきたデータに関してはメディアへ登録される、そのためバックアップの画像をFTPなどで新しい環境へ上げておく必要はない。

ただし、元のサイトでメディアに登録していないデータに関しては、FTPであげる必要がある。(ごちゃごちゃになってしまうので、インポート後の作業のほうがわかりやすい)

インポートが完了するまで、元のサイトが存在している必要がある。

ドメイン変更なし

  • 元のサイト:「http://localhost:8888/wordpress/
  • 引越し先:「http://localhost:8888/wordpress/

トライした流れは下記、

  1. http://localhost:8888/wordpress」でXMLエクスポート
  2. データベースとwordpress削除
  3. データベースとwordpress新規作成
  4. インポートを実行する前に画像データを同じディレクトリ構成で配置。
  5. http://localhost:8888/wordpress/」でXMLインポート実行

上記の流れで「添付ファイルのインポート」をONにして実行すると、メディアへの登録・アイキャッチはOKのようにサイトに反映されますが、画像のファイル名に副番(-1など)が付与されコピーされている状態になります。

  • http://localhost:8888/wordpress/image.jpg
  • http://localhost:8888/wordpress/image-1.jpg

のように副番が付いた状態になります。画像の置いてあるディレクトリの中を見ると分かりますが、画像が2つずつ存在しています。

同じドメインで、同じディレクトリ構成で画像を配置しているので、メディアに登録されている情報だけをデータベースへ書き戻してほしいところですが、このインポートツールでは無理です。

なので、ドメインの変更がない時(レンタルサーバーを別会社へ変える時など)はこのツールを使わずに、レンタルサーバー会社の引っ越しなどのマニュアルにある通り、phpMyAdminなどでデータベースをエクスポート・インポートの作業が正しい方法だと思います。

注意ポイント

XMLファイルに書かれている画像データで、ツールがダウンロードしに行くのはオリジナルのファイルのみです。ダウンロードしメディアへ登録すると、設定があればサムネイルの作成が始まります。

そのため、サムネイルの設定などを事前にやっておかないと思いどおりの結果にならないと思います(サムネイル作成などのプラグインもONにしておく必要あり?)。

「添付ファイルのインポート」をOFF

画像はダウンロードされないし、自動的にメディアに登録されない。

「画像ファイルなどのメディアに関することはノータッチでいいですよ」、という解釈になります。

ドメインの変更があってFTPで画像を上げた時

自動でダウンロードさせたくない、テスト環境でインターネット回線に繋がっていないなどの時は、このツールでメディアへの登録は無理です。別な方法を検討する必要があります。

勘違いしていた点

自己解釈で「先に画像を同じ構成で用意しておけば、ツールが認識してメディアへ登録してくれるはず。なので、バックアップしたXMLファイル、テーマ、画像ファイルなどがあればいつでもお気楽に本番環境に合わせられる。」と思っていました。

が、「添付ファイルをダウンロードしてインポートする」の言葉の通りの動きでした。(XMLファイルに記載されているURLの場所からダウンロードする)

大切なのでもう一度、「ダウンロードして、インポートする」。

そのため、メディアに登録している合計容量が大きい人ほど大変です。

ダウンロードの残り時間の表示はされません。

途中で中断した場合は、インポートを再度実行するとインポートが済んだぶんは除外され、残りのファイルを取りに行く親切設計になっています。

これも大切

XMLファイルをエディタで開いてドメインの一括置換はNGです。

URLの長さ、文字の長さなどを担保するために、イニシャライズというデータが書かれています。ドメインだけ変更すると、XMLファイルの意味が壊れます。

長く運用していくことを考えると、いつか弊害が出そうなで絶対にNGです。

同様に、データベースのデータ(sqlファイル)もエディタでの一括置換はNGです。

データベースのドメイン置換はプラグインやツールがありますが、XMLファイルの置換はプラグインは見つけられなかったです。

まとめ

表示されている文字の通りに理解すれば何も難しいことはなかったです。テスト環境や別のブログなどの本番環境とは違うドメインに、とりあえず記事データと画像をインポートするにはシンプルな方法だなと思いました。