SQLで一発かな?はてなブログからWordPressに移行する際のURL問題を解決したい

f:id:tsubasa123:20170621170607j:plain

こんにちは、つばさ(@tsubasa123)です。

最近WordPress関連を調べる機会が多かったのでちょっとした小ネタをお届けします。小ネタですのであくまで参考程度にご覧ください。WordPressとか興味ないし、って方はまたの機会にお会いしましょう。

はてなブログからWordPressへ移行した人は結構たくさんいるみたい

調べてみるとお引っ越し記事が結構みつかって驚きました。あっ、この人もはてなブロガーだったんだ、みたいな。理由は色々あるようですが、皆さんお引っ越しには苦労されているみたいですね。

WordPress移行作業代行サービス、みたいなことをされている方もお見掛けしたのでそれなりに移行したいってニーズはあるみたい。(さすがにするとは思いますが)はてなブログがSSL化に対応しなかったらもっと人気がでるのかも。代行サービスやってみようかな。

お引っ越し記事を見ると大体やり方は決まっているみたいでして、「はてなブログ WordPress 移行」とかで検索して2~3記事くらい目を通せばなんとなく流れは理解できると思います。結構長いのでここでは省略。

どうやらURLが問題児らしい

で、今回気になったのはパーマリンクの変更作業。

はてなブログの場合、「設定 > 詳細設定 > 記事URL」から各記事に設定されるURLのフォーマットを指定できるようになっていますが、デフォルトだと「/entry/2017/09/17/123456」のように記事を投稿した日付に基づいて自動生成された文字列が利用されます。

記事を書く際にダッシュボード右側にある「編集オプション > カスタムURL」から個別に設定もできるのですが、特にこだわりのない人は日付フォーマットのままブログを運営しているみたい。

この日付フォーマットがWordPressのパーマリンク設定と相性が良くないらしく、「/」という文字をWordPressの標準仕様では扱うことができない(省略されてしまう)ので、プラグインを入れて修正するという一手間が必要になるようです。

そしてなんとこの作業、1記事ずつ手作業でやるらしいです。クイック編集も使えません。1記事ずつダッシュボードから開いて、URLに「/」を追加していきます。いやーキツイ。

はてなブログで有名な方だと、ヒトデ(id:hitode99)さんなんかが大変そうかな?600記事以上あると思いますが多分全部日付フォーマットなんじゃないかなーと。1記事の修正に1分でも10時間以上、なんとコスパの悪い作業なのでしょうか。

はてなブログはSSLに対応してくれるはずなのでお引っ越しは必要ないと思いますが、備えあれば患いなし、ということで対策を練っておきました。

SQLで多分いけるんじゃないかな

冒頭でもお伝えしましたが参考程度にどうぞ。このやり方は私の実験用のブログでは上手くいったってだけですので悪しからず。

やり方は、色んなブログでも紹介されていますが、「Enhanced Custom Permalinks」ってプラグインをインストールするところまでは同じ。その後に、下記のSQL文を実行するだけ。

INSERT INTO `wp_postmeta` (`post_id`, `meta_key`, `meta_value`) (SELECT * FROM (SELECT `id`, 'custom_permalink', date_format(`post_name`, 'entry/%Y/%m/%d/%k%i%s') AS `meta_value` FROM `wp_posts` WHERE `post_type` = 'post') AS `T1` WHERE `T1`.`meta_value` is not null);

長い、久しぶりにこんな長いSQL書きましたね。SQLって何?って方、勉強するかわかる人に聞いてください。割とリスキーな作業ですのでお気をつけあそばせ。

各WHERE句にもう少し条件追加したり、プラグイン側のソースコードを読んだ上で動作検証した方がより精度は高くなるとは思いますが、私のサブブログでなんとなく動作確認できて満足しちゃったのでこれで良しとします。

これ、専用のプラグインにしたら需要があるかもしれないですね。

さいごに

そこは手作業なんだ…って疑問がぬぐえなかったので色々調べてSQLを書いてみましたが、自己解決できたので満足です。対応方法は他にも色々あると思いますが、今後お引っ越しされる方の1つの手段としてお役に立てれば幸いですね。試してみる方はバックアップをお忘れなく。

【追記】
記事公開後にコメントをいただきましたが、WordPressははてなブログと違い、カスタマイズを間違えると運営しているサイトが壊れてしまう可能性もあります。デザインが崩れるとかではなく、本当にデータが消えてしまうこともありえます。先のコードもご利用中のプラグインやテーマとの兼ね合いで悪影響を及ぼす可能性は0ではありません。ご利用に関しては必ず自己責任でお願いします。

ではでは、最後までお付き合いいただきありがとうございました。