おはようございます。じぇいかわさきです。さて、前回からの続きではてなブログからwordpressへの引っ越して直面した問題の対策についての備忘録の続きです。
前回はタグの削除でしたが、今回は一番問題となる画像のリンクについてです。はっきり言って、これが一番てこづった事です。ネットでは使えると言っていたプラグインが全然使えなかったんです。
同じような状態になった人に助けになれば良いですね。はっきり言って、自分は結構めげましたが、何とか対処しました。

リンクに対する問題
はてなブログとwordpressでは、使用する画像に対するリンクの貼り方が全く違っている。
前回のように、余分なタグを削除しただけでは、根本的に画像のリンクが違っているので、そのままインポートしても画像が表示されるので問題ないように見える。
しかし、そこには大きな落とし穴が口を開いているんです。
[ads]
一見、画像が表示されているので問題ないように見えるのですが、実はその画像ははてなブログの画像フォルダーへリンクが張られているので、はてなブログを参照しているのです。
今後、はてなブログを解約した時点で全ての画像は表示されなくなってしまいますので、画像事態をwordpress側に移す事と、その移した画像にリンクを変更しなければならないのです。
画像を抽出し、wordpressへ移す方法はネット上に公開されている内容で、問題なく移すことができますので、それはそちらを参照していただきたいと思います。
それでは、画像はうまくはてなブログから抽出でき、wordpressへのアップロードが完了したと言う事が前提にします。
はてなからダウンロードした画像を、wordpressにアップロードし認識させるには、プラグインのAss From Serverと言うものを使用します。これは、特に問題なく使用できました。
まったくプラグインが使えない
それでははてなブログのリンク書式を、wordpressの方式に変更するにはどうするか?
ネットで紹介されているのがSearch Regexと言うプラグインです。こちらもネットでは沢山使用方法が紹介されています。
実はその通りに実行したのですが、何回やってもNo Resultsで変換できないどころか、対象が見つからないって言うんですよ。
設定したのは
Search pattern ”https://cdn-ak.f.st-hatena.com/images/fotolife/s/はてなID/YYYYMM..”
Replace pattern ttps://独自ドメイン/wp-content/uploads/YYYY/MM
これで基本的には、一気に変換してくれるはずなんですが、自分の場合は全くダメでした。何回やっても、ファイルを変えてみてもダメ。
更にネットで調べると、Search Regexがダメな場合には、Search and Replaceが使えると書いてあったので、こちらもインストールして使ってみましたが、結果は全く同じ。
Why? となってしまいましたが、こんなところで考え込んでいても先に進まない。
しょうがないので、プラグインを使わずに自力でやる方法を考えました。
そう、また正規表現による一括置換です。
正規表現による一括置換方法
プラグインの使用に敗れたので、自力で何とかするしかありません。それは前回使った正規表現で対象を抽出して置換と言う方法です。
対象となるタグを見てみる。
実は対象となるタグを見てみると、先に書いた簡単な内容ではなかった。
<img class=”hatena-fotolife” title=”f:id:はてなID:20170521211149j:plain” src=”https://cdn-ak.f.st-hatena.com/images/fotolife/s/はてなID/20170521/20170521211149.jpg” alt=”f:id:はてなID:20170521211149j:plain” />
必要とする部分以外に、3つのタグが含まれているので、こいつらも一緒に削除しなければならない。
[ads]
つまり、3つ削除の1つ変更と言う作業をしなければいけないのだ。それではまず、3つの削除から始めよう。
比較的簡単なのは、class=”hatena-fotolife”の部分だ。これは固定値なので、簡単に削除ができる。
置換前 class=”hatena-fotolife”
置換後 \1
これでclass=”hatena-fotolife”は無くなった。次がtitle=”f:id:はてなID:20170521211149j:plain”の部分だ。これは、はてなID以降の数字が日付と時間の組み合わせであるから、ユニークになっているため、削除するには正規表現による抽出が必要となります。
置換前 title=”f:id:はてなID:.*?:plain” ユニークな部分を.*?に置き換える
置換後 \1
こすることで、title=”f:id:はてなID:.*?:plain”はすべて削除できる。最後がplainではなくimageと言うタグも有るので、同じように置換する。
そして最後がalt=”f:id:はてなID:20170521211149j:plain”の部分だ。これはtitleと同じ方式で対処可能となる。
置換前 alt=”f:id:はてなID:.*?:plain” ユニークな部分を.*?に置き換える
置換後 \1
これで、まず不要な部分が削除され、このようにスッキリする。
置換前 <img class=”hatena-fotolife” title=”f:id:はてなID:20170521211149j:plain” src=”https://cdn-ak.f.st-hatena.com/images/fotolife/s/はてなID/20170521/20170521211149.jpg” alt=”f:id:はてなID:20170521211149j:plain” />
置換後 <img src=”https://cdn-ak.f.st-hatena.com/images/fotolife/s/はてなID/20170521/20170521211149.jpg” />
まずはここまでシンプルに整理する。
肝心のリンク先変更は2段階で対応
いよいよ肝心のリンク部分を変更かける。しかし、注意しなければいけないのははてなブログとwordpressはディレクトリー構造が違うので、それを意識して変更しなければならない。
まずは大本を変換する。
<img src=”https://cdn-ak.f.st-hatena.com/images/fotolife/s/はてなID/20170521/20170521211149.jpg” />
このタグの中で、最初に変換するのは赤字の部分です。この部分は固定値なので、この部分を一気にwordpress用に変えてしまいます。
[ads]
これに変換します。https://wordpress/wp-content/uploads
置換前 <img src=”https://cdn-ak.f.st-hatena.com/images/fotolife/s/はてなID/20170521/20170521211149.jpg” />
置換後 <img src=”https://wordpress/wp-content/uploads/20170521/20170521211149.jpg” />
まずはこれで第1段階の変換が完了しました。
そして次が、ディレクトリー構造の変換です。
はてなブログのディレクトリーは20170521となっており、これはYYYYMMDDを表しております。一方、wordpressのディレクトリーはYYYY/MMと言う構造を取りますので、YYYYMMDDをYYYY/MMに変換しなければいけません。
要は、YYYYMMDD → YYYY/MM ですね。
これはどのようにして変換すればいいのでしょうか?これも正規表現での抽出を使うのです。
まず、YYYYMMDDを引数として抽出するにはどうすればいいのか? ネットやエディターのヘルプを読んで見つけたのがこれ。
YYYYMMDDは20170521と言うデータですので、 /([0-9]{4})([0-9]{1,2})([0-9]{1,2})/と言う方法で引数に当てはめます。
/([0-9]{4})([0-9]{1,2})([0-9]{1,2})/で([0-9]{4})がYYYYを抽出します。次の([0-9]{1,2})がMMを、更に次の([0-9]{1,2})がDDになります。このようにして、YYYY、MM、DDの3つの引数に変換します。
次にwordpressでは/YYYY/MM/だけを使用しますので、YYYYには最初の引数の$1を、MMには2番目の引数の$2を当てはめます。
/$1/$2/なりますね。
置換前 /([0-9]{4})([0-9]{1,2})([0-9]{1,2})/ /YYYYMMDD/
置換後 /$1/$2/ /YYYY/MM/
で変換が終わりです。
置換前 <img src=”https://wordpress/wp-content/uploads/20170521/20170521211149.jpg” />
置換後 <img src=”https://wordpress/wp-content/uploads/2017/05/20170521211149.jpg” />
これで全てのタグの変換が完了です。
おっと、最後にH3 → H2へ、H4 → H3へ変換しで、これで全てのタグが完了ですね。
後は、インポートすれば完了です。
まとめ
プラグインを使用すれば簡単にできると思っていた事が、実際には使えない事が分かり手作業で対応しなければいけない事になりました。
その時点で頭が真っ白になってしまいましたが、なんとかして効率化しないと時間ばかりかかって作業が終わりません。
丸々3日かかって正規表現を学び、何とかリンクまでの張替えを完了しました。今回の作業はホント手間がかかりましたが、この方法を確立できたので3つのブログも最終的には簡単に移行することが出来ました。
この苦労は久しぶりですね。
最初の頃は、プラグインが使えないので、インストールしたデータを一回全部削除してやり直したりと、手探り状態でしたが、数ラインのダミーファイルを作る事も覚えて、だいぶ賢くなりました。
この作業が、同じような事で悩んでいる人の助けになれば良いですね。
[twt]
