AmazonからAPIを使って商品データを取得し、WordPressに投稿する方法

Product Advertising API(以下AmazonAPI)はAmazonから商品データを取得することができるAPIです。
AmazonからデータをWordPressに投稿するコードを書きましたのでよかったら参考にしてみてください。

※以下全部functions.phpに書いてください。

AD

必要な定数の定義

まずはAmazonAPIで必ず必要になるアクセスキーやシークレットキーなどを定義します。
実際のキーの取得やアカウント登録などの手順についてはAmazon Webサービス入門 サービス利用の準備の解説が詳しいです。

ユーティリティ関数の定義

次は商品データ取得の際に必要となるfunctionの定義です。都度ベタに書いてもいいですがあとあと大変な目にあいます。
そろそろclass覚えないと。。。。

絶対必要なのはget_key()というfunctionで、ここでAmazonAPIに必要なタイムスタンプによる認証キーを生成しています。

認証(Timestamp及びSignature)の項が詳しいです。

実際の取得処理

ここまでで下準備が終わりましたので、実際にAmazonAPIにアクセスして商品データを取得します。
以下の例はAmazon内のDVDカテゴリの中のアニメカテゴリから新着順に商品を取得する例です。
なお、実際の実行はCronに任せますのでfunctionの定義だけでまだ実行はされません。

カスタムフィールドにどの値を持つか、本文はどうするかなどは適宜カスタマイズしてみてください。

Cronの設定

上記の処理を手動で走らせたり連続で走らせるとすぐにサーバが落ちたりAPIへのアクセスがブロックされたりしてしまいます。
そこでCron(wp_cron)を使って定期的に自動実行させます。

AmazonAPIの利用規約では1時間2000リクエストとなっていますので、それを超えないように注意してください。

取得した商品データの更新

AmazonAPIの規約では、商品データをローカル(というか自分のサーバ)に保持することは許可されていますが、24時間以上保持することが禁止されています。
そこでデータ取得時に現在時刻をカスタムフィールドに保存していましたので、その時刻と現在時刻の差が24時間以上であれば再度商品取得処理を行うという処理を加えます。

これはCronではなくshutdownにフックしています。
誰かがアクセスしてそのときが24時間を超えていれば更新する、という仕組みです。

コードをまとめたものはgistに上げてます。

おまけ:wp_cronの管理に最適なプラグイン

cron
wp_cronは便利ですが、いつ実行されるのか本当に実行されたのかが分かりにくいところがあります。
そこでwp_cronを監視するプラグインをいくつか試しましたが、一番よかったと思うのがWP-Crontrolでした。

気に入っている点として、管理画面上から即時実行ができる点があります。
実行結果が間違っていないかをすぐに確認できますし、Cron登録済みの処理をすぐ実行したいときにも重宝します。

余談:データ突っ込むだけじゃ儲かりません

単純にAmazonからデータを取得してアフィリエイトサイトに仕立てたとしても、まず儲からないでしょう。そのようなクローンサイトのようなものはGoogleからも嫌われ、ユーザーにとってもメリットがありません。

データを取得し、何らかの加工をして提供する必要があると思います。

たとえば顔認識APIを使えば楽モになりますし、楽天などからも商品情報を取って多角的に比較できる情報サイトにしてもいいでしょう。画像の色を分析し、色で検索できる商品サイトなども面白いかもしれません。

せっかく大量の商品データを扱うことができるのですから(しかもAmazonだけでなく、楽天もあるしYahoo!もあるし)、一捻り加えて面白いサイトをつくってみてください。

余談の余談:WordPress使わなくてもいいんじゃ・・・とお思いでしょう

APIを使うサイトなら直接APIを呼び出して都度ページを生成したり、自前でキャッシュ処理を書けばWordPressを使う必要はありません。
ですが以下の様なメリットがあると思い、WordPressに投稿するというかたちを取っています。

・サイト独自のコメントや評価機能をつけたい
 →コメントは標準装備です。評価機能はプラグインがいろいろ。

・会員制サイトにして内輪で盛り上がりたい
 →会員機能も標準装備です。ソーシャルログインもプラグインを使えば簡単です。

・キャッシュ処理が難しい
 →記事にしてしまえばそれすなわちキャッシュとなります(アップデートのための処理は必須ですが)

・自分で組んだら遅い、重い
 →WordPress高速化のノウハウは多くの方が実践されています。それがそのまま使えます。

WordPressにはこういう使い方もあるということで。。。。
何かの参考になれば幸いです。

AD

Share

Commentsコメント

メールアドレスは公開されません。コメントは必ずご入力ください。

HTMLタグは使用できません。ソースコードを書き込みたい場合はCodetterGistCodePenなどのご利用が便利です。

コメントはまだありません。