かわろぐ

ITビジネス、ガジェット、メディア、経済、子育て、遊び、飯とかなんでも配信していくよ。WordPress関連の記事はメモ感覚で書いてるので、乱文で失礼仕り候。ガジェ通とかにも記事提供してるので、よろしくね!

特定の指定したカテゴリから記事をインポートして、記事の最初の画像をアイキャッチをあてる

2015/07/31

LINEで送る
Pocket

wordpress

ミッション

WordPressで運用中の旧サイトAのカテゴリ○○○○というカテゴリに属する全ての記事を、運用中の新サイトBに移植したい

 

やること

  1. カテゴリ○○○○の記事全てのアイキャッチ画像コンテンツ内で使用されている画像を画像の重複を避けるため階層を維持したままローカルに保存したい
  2. 旧サイトAのカテゴリ○○○○の記事をエクスポート
  3. エクスポートしたXMLファイルの調整(※重要)
  4. 新サイトBに調整したXMLファイルをインポート
  5. 画像をFTPでアップロード
  6. アップロードした画像をWordPressのメディアライブラリにリンクさせる
  7. 記事のコンテンツに記載されている最初の画像をアイキャッチとして一括設定

 

 1. カテゴリ○○○○の記事全てのアイキャッチ画像とコンテンツ内で使用されている画像を画像の重複を避けるため階層を維持したままローカルに保存したい

(1-1)画像一覧表示をプラグイン化したのでそれを使う

プラグインというか、ただのPHPファイル。特定のカテゴリを指定してアイキャッチとコンテンツ内のimageタグ全てを引っ張ってこれる状態にしたかったので、プラグイン的な感じでとりあえず、まとめた。

247_category_all_photos.zip

 すげぇ、取り急ぎ作ったので汎用性がないけど、とりあえず動くのでよし。 DLしたら同梱されているindex.phpの

require_once('../../../wp-load.php');

 

の相対パスをwo-load.phpが入ってるとこに指定してあげる。

query_posts('showposts=-1&cat=10post_status=publis');

 

 表示件数とカテゴリIDを指定する。修正が終わったらWordPressのプラグインが入ってるディレクトリにぶち込む。

http://ドメイン/wp-content/plugins/247_category_all_photos/

にアクセスすると、指定したカテゴリの記事に設定されてるアイキャッチとコンテンツ内の画像が全て表示される。「wp-content」の部分は自分がインストールしたWordPressのインストールディレクトリに変更する。

 

(1-2)画像をローカルに保存する

 WeBoxなどのフリーソフトを使って、画像が一覧表示されてるページをまるごとダウンロードする。階層ごとダウンロードされたら、とりあえずOK。

 

2. 旧サイトAのカテゴリ○○○○の記事をエクスポート

カテゴリを指定してエクスポート。細かいやり方は割愛。

 

3. エクスポートしたXMLファイルの調整(※重要)

 ここが超重要ポイントになる。

(3-1)まずは画像ファイルのURLを置換する

まずコンテンツ内の画像パスは月ベースでUPしてる場合だと
「http://旧サイトAのURL/wp-content/uploads/2015/01/01/xxxx.jpg」
とかになってるはず。ここをテキストエディタなどを使って一気に置換する。ちなみに今回、吾輩が使ったのはEmEditor Freeです。正規表現置換ができる事が重要なので、それができればどんなエディタでもOK。

 画像が重複しないようなら、一つのフォルダにまとめてもOK。例えば先ほどDLした画像を「pastimage」ってフォルダにまとめて新サイトBにアップするなら、正規表現置換を使って

http://旧サイトAのURL/wp-content/uploads/ \d{1,4}/ \d{1,4}/ \d{1,4}/

http://旧サイトBのURL/wp-content/uploads/pastimage/

って感じで置換する。\d{1,4}は1桁~4桁の数字って意味。注意しなくちゃいけないのは相対バスだと後ほど使う「Auto Post Thumbnail」で画像を認識してくれないってこと。これに相当ハマった。

 

 (3-2)次に_thumbnail_idが入ってるメタ情報を削除する

 「_thumbnail_id」ってのは、その投稿に紐付いてるアイキャッチのこと。この時に紐付いてる「_thumbnail_id」は旧サイトAのものなので、邪魔になる。

あと「Auto Post Thumbnail」っていう記事内の最初の画像を一気にアイキャッチに設定するプラグインを使うんだけど、このメタ情報を削除しないと、ちゃんと設定されないので注意
▶参考サイト:[WordPress]Auto Post Thumbnailでインポート記事のアイキャッチ画像が作成されない時の解決方法

そしてまたEmEditorの出番。

<wp:postmeta>
<wp:meta_key>_thumbnail_id</wp:meta_key>
<wp:meta_value><!\[CDATA\[\d{1,4}\]\]></wp:meta_value>
</wp:postmeta>

今度もIDの部分を\d{1,4}に設定する。「[」このカッコはバックスラッシュでエスケープするように。

 

4. 調整したXMLを新サイトBにインポート

普通にインポート。細かいやり方は割愛。

 

5. 画像をFTPでアップロード

 /wp-content/uploads/に(1-2)でダウンロードしておいた画像ファイル群をFTPを使ってアップロードする。
この時、画像を上書いたりしないように要注意

 

6. アップロードした画像をWordPressのメディアライブラリにリンクさせる

プラグインの「WordPress Flash Uploader」を使う。参考サイト参照。
▶参考サイト:[WordPress] FTPでアップした画像をメディアに同期・追加する方法

 

7. 記事のコンテンツに記載されている最初の画像をアイキャッチとして一括設定

プラグイン「Auto Post Thumbnail」を使って、記事内のファーストイメージをアイキャッチに設定する。

 

8. サムネイルがちゃんと表示されない時は

  • 不要なmeta_keyが残ってないか確認する
  • AJAX Thumbnail Rebuildを使用してサムネイルサイズの画像を生成してみる

 

LINEで送る
Pocket

-WordPress
-