WordPressにMT形式の投稿をインポートするとアイキャッチが反映されません。
自動でアイキャッチを作成する方法として「Auto Post Thumbnail」プラグインがあります。
>>>AutoPostThumbnail
このプラグインは「投稿の最初の画像をアイキャッチに設定する」とのことですが正しく動作しませんでした。
現象としては外部からインポートされた記事のアイキャッチ設定に失敗しているようです。
原因は「Auto Post Thumbnail」のバグです。
なおバージョンは3.4.1です。
プラグインの編集
プラグインの編集 → Auto Post Thumbnail → auto-post-thumbnail.php
303行目にバグがあります。
画像URLを抜き出すPHPコードです。ここが正しいURLを抜けてないかも?
$image = substr($image, strpos($image, '"')+1);
コードは合ってるっぽいんですけどねぇ。。。
ここを下記のように書き換えます。
$image = $matches[1][0];
これで「Auto Post Thumbnail」を実行するとアイキャッチが正しく反映されるようになりました。
ただhttp→httpsにより画像URLとsrcのURLが異なる場合はファイル名で%LIKE%検索しないとダメかな。
具体的にはこんな感じ。
$image = basename($matches[1][0]);
$result = $wpdb->get_results("SELECT ID FROM {$wpdb->posts} WHERE guid LIKE '%".$image."%'");
なお反映されたアイキャッチは恒久的なものなので一度反映されたらプラグインを削除してOKです。
【補足】アイキャッチをまとめて削除する方法
アイキャッチをまとめて削除するにはfunctions.phpに下記ソースを2行を追記。
画面をリロードすればアイキャッチがすべて削除されます。
削除後はソースも削除して下さい。
global $wpdb;
$wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_key = '_thumbnail_id'" );
まとめ
実はMT形式ファイルにはアイキャッチ情報がちゃんと入っています。
これを使えばアイキャッチのインポートもできるはずですが。。。
BASENAMEで投稿ID取得 → IMGAのURLから画像ID取得 → meta_keyを_thumbnail_idで
投稿IDと画像IDとを登録
でイケるはず。
また時間のあるときにでもやってみようかな。
関連記事