PEAR::Services_AmazonのItemSearchと「WP exec PHP」プラグインを連携させて、WordPressの投稿ページにAmazonでキーワード検索した商品を表示させるプログラムを作成してみました。
![]() | 采配 |
| 【落合博満】 | |
| ダイヤモンド社 より 2011-11-17 発売 | |
| ロープライス ¥ 1,050 or 新品 ¥ 1,575 | |
![]() | スティーブ・ジョブズ I |
| 【ウォルター・アイザックソン】 | |
| 講談社 より 2011-10-25 発売 | |
| ロープライス ¥ 1,130 or 新品 ¥ 1,995 | |
上記が、実際に作成したプログラムの実行結果です。WordPressの投稿ページ内で特殊タグ([exec]〜[/exec])に挟まれた部分のPHPコードをで実行出来る「WP exec PHP」プラグインを使用して表示させています。
末尾に実際のソースコードを添付いたしましたが、プログラムの概要としては以下のようなことを行いました。
- 「Services/Amazon.php」をインクルードファイルとして読み込む。
- 定数として、アクセスキー、シークレットアクセスキー、アソシエイトID、Amazon ECSのバージョンを定義しました。Amazon ECSのバージョンは、最新の「2011-08-02」を使用することにしました。
- 変数として、PEAR::Services_AmazonのItemSearchで使用するサーチインデックス、オプションと製品表示数を制御する変数を定義しました。
- 定数として定義したアクセスキーID、シークレットアクセスキー、アソシエイトIDを使用して、Services_Amazonの呼び出しを行いました。
- 変数として定義したサーチインデックス、オプションを使用して、Services_AmazonのItemSearch検索結果を配列に格納しました。
- 上記で検索結果を格納した配列から、For文のループで製品表示数分の検索結果を表示させました。今回、「WP exec PHP」プラグインの使用を前提にしましたので、echo文を使用して、表示部分のHTMLを出力させました。
以下に、実際のソースコードを添付いたします。
<?php
// インクルードファイル
require_once('Services/Amazon.php');
// 定数
define('ACCESSKEY_ID', 'xxxxxxxxxxxxxxxxxxxx');
define('SECRET_ACCESSKEY', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
define('ASSOCIATE_ID', 'xxxxxxxxxx-22');
define('ECS_VERSION','2011-08-02');
define('RESPONSE_GROUP','Small,Images,ItemAttributes,OfferSummary,');
// 変数
$search_index = 'Books';
$keyword='スティーブ・ジョブズ';
$sort = 'salesrank';
$item_page='1';
$show_num='2';
// Services_Amazonの呼び出し
$amazon = new Services_Amazon(ACCESSKEY_ID,SECRET_ACCESSKEY,ASSOCIATE_ID);
$amazon->setLocale('JP');
$options = array();
$options['Keywords'] = $keyword;
$options['Sort'] = $sort;
$options['ResponseGroup'] = RESPONSE_GROUP;
$options['ItemPage'] = $item_page;
//検索結果を配列に格納
$result = $amazon->ItemSearch($search_index, $options);
//検索結果の表示
if (!PEAR::isError($result)) {
for( $i = 0; $i < $show_num; $i++ ) {
//データを変数に格納
$detail_page_url = $result['Item'][$i]['DetailPageURL'];
$medium_image = $result['Item'][$i]['MediumImage']['URL'];
$medium_image_width = $result['Item'][$i]['MediumImage']['Width']['_content'];
$title = $result['Item'][$i]['ItemAttributes']['Title'];
$author = $result['Item'][$i]['ItemAttributes']['Author'][0];
$publisher = $result['Item'][$i]['ItemAttributes']['Publisher'];
$publication_date = $result['Item'][$i]['ItemAttributes']['PublicationDate'];
if(isset($result['Item'][$i]['ItemAttributes']['ListPrice']['FormattedPrice'])){
$list_price= $result['Item'][$i]['ItemAttributes']['ListPrice']['FormattedPrice'];
}
if(isset($result['Item'][$i]['OfferSummary']['LowestNewPrice']['FormattedPrice'])){
$lowest_new_price= $result['Item'][$i]['OfferSummary']['LowestNewPrice']['FormattedPrice'];
}
if(isset($result['Item'][$i]['OfferSummary']['LowestUsedPrice']['FormattedPrice'])){
$lowest_used_price = $result['Item'][$i]['OfferSummary']['LowestUsedPrice']['FormattedPrice'];
}
if($list_price==0){
$new_price=$lowest_new_price;
}else{
$new_price=$list_price;
}
//データを表示
echo '<div style="border: 1px solid gray;">';
echo '<table border="0" width="100%" cellpadding="2" cellspacing="2">';
echo '<tbody>';
echo '<tr><td colspan="1" rowspan="5" width="'.$medium_image_width.'">';
echo '<a href="'.$detail_page_url.'"><img src="'.$medium_image.'"/></a></td>';
echo '<td> <a href="'.$detail_page_url.'">'.$title.'</a></td></tr>';
echo '<tr><td> 【'.$author.'】</td></tr>';
echo '<tr><td> '.$publisher.' より '.$publication_date.' 発売</td></tr>';
echo '<tr><td> <a href="'.$detail_page_url.'">ロープライス '.$lowest_used_price.'</a> or 新品 '.$new_price.'</td></tr>';
echo '<tr><td > </td></tr>';
echo '</tbody>';
echo '</table>';
echo '</div>';
echo '<br />';
}
}
上記のプログラムは、Product Advertising APIを使用していますので、実際にプログラミングを実行するためには、【amazon アソシエイト】でユーザー登録を行って、AmazonのアソシエイトID、アクセスキーID、シークレットアクセスキーの入手が必要です。






















