【WordPress】 アンテナサイト用サムネ画像をWordPressに取り込む

ぼちぼち動き始めます。
cookieに関するまとめもしたかったのですが、ちょっと後回し。

現在突貫でアンテナサイトにサムネ画像をつけようとしています。
やっぱりサムネがユーザーを導く力は大きく、はじめから付けておくべきものでした。

フィードからサムネ画像を取得しメディアライブラリに登録するあたりが難解だったので、記録しておきます。

スポンサーリンク

サムネ画像の扱い

まずサムネ用画像はどう用意するかで悩んでいました。

①サムネ画像はキャッシュとしてダウンロードしてから使う。
②画像掲載サイトから直リンクで使う。

フィードで抜粋内に画像URLが配信されているので、そのまま使うと直リンクになります。
こういう仕組みのものなので本来は直リンクで使って問題ないものでしょう。

しかし困ったことに、記事サイト自体が画像を他サイトの直リンクで使っている場合が結構あるのです。
そして他サイトの画像URLをフィードとしてばらまいているのです。
海外の反応ブログでは必ずネタ元になるサイトがあるので、ネタだけでなく画像とリソースもオリジナルサイトに任せてしまうというちょっとグレーなやり方です。
またゲームやニュースなどの話題では、公式サイトから直リンクということも多くあります。

オリジナルの画像を掲載しているサイトとしては、アクセスがないアンテナサイトから画像だけを一日数十万回と叩かれるのは不本意でしょう。
そんなこともあり、サムネ画像はキャッシュとしてダウンロードし小さくトリミングしてから掲載することにしました。

中には全く関係ないサイトから画像だけ直リンクでパクっているアバンギャルドなサイトもあります。
たどってみると個人の旅行ブログだったり食事ブログだったり。

キャッシュ化もそれはそれでグレーですが、まあ実害をできるだけ小さくということで。

ちなみにフィード内で画像URLを配信してるのは全体の70%程度です。
ほとんどの記事でアイキャッチとして画像が使われていますので、本当に全ての記事にサムネを付けたいのであればスクレイピングで記事ごとぶっこ抜く必要があります。
それはさらにグレーが濃くなるのと、今のレンタルサーバーのリソースでは不可能です。

サムネが抜けた記事は代替となる画像を用意しないといけないですね。

フィードから画像URLを取得

まず配信されたフィードから画像のURLを取得します。
functions.phpに作ったフィードを解析してWordPressの記事として取り込む「getfeed関数」に画像に関するコードを追加します。

フィードから記事タイトルなどを解析している箇所に以下のコードを追加。

$list[‘thumbnail’]はWordPress記事として記載する際に使っています。

画像のダウンロード

/* 画像ダウンロード */の箇所を追加しています。
記事として追加したあとで発行される記事idを使って画像も取り込みます。
細かいechoはデバック用なので気にしないでください。

addMediaLib関数はfunctions.phpで新たに定義するメディアライブラリに追加するための関数です。

addMediaLib関数追加

メディアライブラリに追加して各サイズのサムネを生成する関数です。
funcions.phpに追加します。

相変わらず切り貼りして「動いた動いた」というレベルのひどいコードですので、もし使うなら一度精査してみてください。

動かしてみると

この通りフィードの取得と同時にメディアライブラリに登録されています。

20150228_img_dl_01

サムネも各サイズが自動で生成されています。

20150228_img_dl_02

こんな感じの仕組みでフィード取り込みと同時にサムネ画像が用意出来ました。

記事一覧を出力する際にこの画像ファイルを指定すればサムネ付きアンテナサイトの完成です。


スポンサーリンク
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA