API(以下AmazonAPI)はAmazonから商品データを取得することができるAPIです。AmazonからデータをWordPressに投稿するコードを書きましたのでよかったら参考にしてみてください。※以下全部functions.phpに書いてください。ADs必要な定数の定義まずはAmazonAPIで必ず必要になるアクセスキーやシークレットキーなどを定義します。サービス利用の準備の解説が詳しいです。次は商品データ取得の際に必要となるfunctionの定義です。都度ベタに書いてもいいですがあとあと大変な目にあいます。class覚えないと。絶対必要なのはget_key()というfunctionで、ここでAmazonAPIに必要なタイムスタンプによる認証キーを生成しています。認証(Timestamp及びSignature)の項が詳しいです。返り値のURLにアクセスするとXMLが取得できます。URL.'?'.$canonical_string.'&Signature='.urlencode_rfc3986($signature);}//画像をサーバに保存するfunction//URLを投げたら指定したディレクトリに保存するだけ。WP_CONTENT_DIR.'/upload/'.basename($url);}実際の取得処理ここまでで下準備が終わりましたので、実際にAmazonAPIにアクセスして商品データを取得します。以下の例はAmazon内のDVDカテゴリの中のアニメカテゴリから新着順に商品を取得する例です。実際の実行はCronに任せますのでfunctionの定義だけでまだ実行はされません。カスタムフィールドにどの値を持つか、本文はどうするかなどは適宜カスタマイズしてみてください。12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091//ここから実際の取得処理------------------------------------------//取得処理はwp_cronで動かしますのでadd_actionは不要です。Amazon上のカテゴリNo);//ページカウンター//1ページずつ取っていきます。(String)$act;}//ここで記事として投稿処理を行う//ページスラッグがEANコード(ISBN的なものだと思われる)、タグをキャストとして投稿していますが適宜カスタムフィールドや本文などにしてもいい。$actarray));//重複チェック//同じ商品を取ってしまった場合、EANが同じになるので末尾に「-2」などと付加される。その「-」があれば一回投稿した記事を削除する。//なお、無条件で「-」入りだと削除しているのでEAN以外をpost_nameにしていると間違って削除されるおそれがあります。{//カスタムフィールドの付加//商品URLや画像URLに加えて最終更新日としてtime()を追加している。上記の処理を手動で走らせたり連続で走らせるとすぐにサーバが落ちたりAPIへのアクセスがブロックされたりしてしまいます。そこでCron(wp_cron)を使って定期的に自動実行させます。AmazonAPIの利用規約では1時間2000リクエストとなっていますので、それを超えないように注意してください。1234567891011121314151617181920212223242526272829//Cronの設定---------------------------------------------------------//デフォルトのdailyやweeklyだけだと使い勝手が悪いのでいくつか足しておく//このcron_schedulesとwp_schedule_eventはテンプレ的にこのままでいいでしょう。$schedules;}//Cronに上記のget_amazon()を登録する//90分単位で動作します。'my_activation');取得した商品データの更新AmazonAPIの規約では、商品データをローカル(というか自分のサーバ)に保持することは許可されていますが、24時間以上保持することが禁止されています。そこでデータ取得時に現在時刻をカスタムフィールドに保存していましたので、その時刻と現在時刻の差が24時間以上であれば再度商品取得処理を行うという処理を加えます。これはCronではなくshutdownにフックしています。誰かがアクセスしてそのときが24時間を超えていれば更新する、という仕組みです。1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950//ここからは商品データアップデート処理------------------------------------------//Amazonは規約で24時間以上のキャッシュ保存が認められません。そこで前述のカスタムフィールドに加えている「LastUpdate」を見て、24時間が経過している場合は更新処理を行います。end//shutdownにフックすることで見る人にも優しい(はず)add_action('shutdown','update_amazon');コードをまとめたものはgistに上げてます。おまけ:wp_cronの管理に最適なプラグインwp_cronは便利ですが、いつ実行されるのか本当に実行されたのかが分かりにくいところがあります。そこでwp_cronを監視するプラグインをいくつか試しましたが、一番よかったと思うのがWP-Crontrolでした。気に入っている点として、管理画面上から即時実行ができる点があります。実行結果が間違っていないかをすぐに確認できますし、Cron登録済みの処理をすぐ実行したいときにも重宝します。余談:データ突っ込むだけじゃ儲かりません単純にAmazonからデータを取得してアフィリエイトサイトに仕立てたとしても、まず儲からないでしょう。そのようなクローンサイトのようなものはGoogleからも嫌われ、ユーザーにとってもメリットがありません。データを取得し、何らかの加工をして提供する必要があると思います。顔認識APIを使えば楽モになりますし、楽天などからも商品情報を取って多角的に比較できる情報サイトにしてもいいでしょう。画像の色を分析し、色で検索できる商品サイトなども面白いかもしれません。大量の商品データを扱うことができるのですから(しかもAmazonだけでなく、楽天もあるしYahoo!もあるし)、一捻り加えて面白いサイトをつくってみてください。余談の余談:WordPress使わなくてもいいんじゃ・・・とお思いでしょうAPIを使うサイトなら直接APIを呼び出して都度ページを生成したり、自前でキャッシュ処理を書けばWordPressを使う必要はありません。以下の様なメリットがあると思い、WordPressに投稿するというかたちを取っています。・サイト独自のコメントや評価機能をつけたい→コメントは標準装備です。評価機能はプラグインがいろいろ。・会員制サイトにして内輪で盛り上がりたい→会員機能も標準装備です。ソーシャルログインもプラグインを使えば簡単です。・キャッシュ処理が難しい→記事にしてしまえばそれすなわちキャッシュとなります(アップデートのための処理は必須ですが)・自分で組んだら遅い、重い→WordPress高速化のノウハウは多くの方が実践されています。それがそのまま使えます。WordPressにはこういう使い方もあるということで。何かの参考になれば幸いです。コメントをキャンセルメールアドレスが公開されることはありません。コメント名前メールアドレスサイトCommentsコメントはまだありません。2Archive2020年92019年182018年102017年172016年202015年212014年312013年552012年50SearchSocialAboutWeb制作会社ではたらく社畜のアウトプットです。Web制作技術のほか、雑記など。当ブログと運営者についてもっと詳しく見るプライバシーポリシーContactお問い合わせは下記フォームをご利用ください。お時間がございましたらお問い合わせの前にこちらをご一読いただけますと幸いです。Wood-Roots:blog。