WordPressのアイキャッチ画像を一括で復旧する方法

    WordPressでAutoPostThumbnailで作成したアイキャッチ画像が壊れた際に一括で修復する方法です。(手動で作ったものでもOK)

    Screen Shot 2012 04 15 at 9 24 05 PM

    データベース上から_thumbnail_idを削除してauto post thumbnailで再作成

    @ksworks さんに手伝ってもらって調べた結果、データベース上のwp_postmetaというテーブルに格納されている「_thumbnail_id」というmeta_keyを削除すれば一括でアイキャッチ画像の登録データを削除出来ることがわかりました。

    そこで、登録データを削除の上、auto post thumbnailでアイキャッチ画像を再作成で解決しました。

    と、こう書くとあっさり終了なのですが、ここにたどり着くまでにはかなり大変だった><

    まじ@ksworksさんには感謝です。

    ※実際にはまだ全部アイキャッチ画像が復旧していないのですが、それは、そもそものブログの元画像がなくなってしまっている記事で、それ自体は追々手動で復旧を目指そうと思います。

    発端は突然ブログがクラッシュ

    先日こちらの記事でお知らせしたのですが、僕のブログが突然クラッシュしました。

    【お知らせ】ブログ暫定的に復旧しています。 | https://highhigherhighest.com/

    いくつか原因は考えられるのですが、決定打には欠けていて真相は闇の中ですorz

    幸いにもDBを取り出すことも出来たので、記事自体の損失はなかったのですが、画像データを結構失ってしまいました。

    幸いにもローカルに保存してあった画像も結構あったので保存してある分に関しては手動で復旧したのですが、困ったのがアイキャッチ画像。

    記事一覧を出すとこんな感じで画像部分が表示されないのです。

    Screen Shot 2012 04 15 at 9 23 48 PM

    ※アイキャッチ画像とは記事一覧などで文章だけのところに華やかさを添える画像(人物とか建物とかなんでもOK)

    元になる画像と保存場所もファイル名も変わっている

    このアイキャッチ画像通常はブログで使っている一枚目の写真・画像を手動でポチポチ登録していくのですが、普段ブログを書く時に使っているMarsEditというブログを書くソフトにはこのアイキャッチ画像を登録する機能がありません。

    ブログで記事を検索したときの見やすさなどを考慮してもアイキャッチ画像はあったほうがいいのですが、記事を投稿した後にWebの管理画面で逐一登録するのも面倒。

    なので、ブログを投稿すると一枚目の画像を自動でアイキャッチ画像として登録してくれる

    「auto post thumbnail」というWordpressのプラグインを使っていました。

    復旧の際にわかったのですが、このプラグイン、アイキャッチ画像を生成するときに

    「元の画像を複製」した上でファイル名に「画像サイズを付加」したあげく複製したデータを「生成を実行した月の画像フォルダに保存」していました。

    勿論、普通に使っていれば全く問題ではないのですが、これが復旧の際にすごく苦労しました。

    プラグイン導入前に投稿した記事が超大変

    「auto post thumbnail」導入後の記事は、投稿と同時にアイキャッチ画像が生成されるので、元データの画像と、アイキャッチ画像画像は同じフォルダに保存されます。

    導入前の記事は、すでに投稿されているため、プラグインを導入時にはアイキャッチ画像がありません。

    なのでプラグインの管理画面から「アイキャッチ画像」を作成するボタンがあるので、一旦それを使って作成します。

    ここで引っかかりました。

    すでに投稿されている記事に対してアイキャッチ画像の生成をプラグインで行うと、

    「元画像の保存されているフォルダ」ではなく、「プラグインを実行した月のフォルダ」にアイキャッチ画像が生成されてしまうのです。

    auto post thumbnailは作るだけ

    最初アイキャッチ画像のデータが消えたことに気づいたとき僕は

    「もう一回生成しなおせばいいんじゃないかと思ったわけです」

    と思い、調べてみたのですが、残念ながら、auto post thumbnailは自動でアイキャッチ画像を生成するだけで、削除は出来ないことがわかりました。

    その時点で僕がわかっていた対処方法は、「一個一個アイキャッチ画像を消して、再度アイキャッチ画像を登録していくことでした。」

    200個近い記事を手作業でやるのは(´・д・`)ヤダ

    登録する手順はわかっている。特に記事ごとにやり方を変えなくてはいけないわけでもない、つまり自動化出来るはずだとは思っていたのですが、どうまとめて処理するかがわかりませんでした。

    最初僕はアイキャッチ画像のデータがphpファイルに登録されていると思って、FTPでサーバ内のファイルを探しまくっていたのですが、全然見つからず(´・ω・`)って感じでした。

    そこで@ksworksさんにお願いしてプラグインの中身を見てもらったところ、記事とアイキャッチ画像を紐づけている情報はデータベースで保持していることがわかりました。

    Screen Shot 2012 04 15 at 9 25 55 PM

    その保持しているmeta_keyが_thumbnail_idだったわけです。

    Screen Shot 2012 04 15 at 9 26 00 PM

    なのでphpmyadminを使ってデータベースにログイン後、絞り込み検索で_thumbnail_idだけを表示、一括チェックを入れて削除しました。

    Screen Shot 2012 04 15 at 9 30 20 PM

    全て選択して削除

    Screen Shot 2012 04 15 at 9 26 14 PM2

    これによって、ブログに登録されてたアイキャッチ画像のデータが全てなくなりました。(実ファイルは存在する。記事にこの画像をアイキャッチ画像として使ってくださいという情報がなくなったという意味)

    それで再度auto post thumbnailを使って、アイキャッチ画像を再作成したというわけです。

    phpmyadminからwordpressの管理画面に移動して「プラグイン」のところからauto post thumbnailの画面に行く。

    Screen Shot 2012 04 15 at 9 32 47 PM

    Generate Thumbailsをクリックすると作成開始です。

    Screen Shot 2012 04 15 at 9 33 01 PM

    今回は200記事近くやったので、結構時間かかりました。

    Screen Shot 2012 04 15 at 9 35 08 PM

    100%になれば完了。

    記事の一覧を表示してみると・・・・

    無事アイキャッチ画像が生成されています。

    Screen Shot 2012 04 15 at 9 24 01 PM

    そもそもこの状況になる人はほとんどいないと思いますけど、もしそんな状況になっても一記事ずつポチポチせず、この手順で一瞬で復活を果たしてもらえたらうれしいです!

    あとがき

    最初はなんかプログラム作って、一括削除しなきゃいけないのかなと思っていたのですが、なんとも意外な方法で解決してしまいました。

    記事に関連する内容で不具合が起きたら、まずDBを見てみるのがいいかも知れません。

    問題解決に付き合ってくれた@ksworksさんには改めて感謝です。

    SNSでもご購読できます。