WP-Amazon

WP-Amazon スクリーンショットWordPress 導入直後から、Amazon アフィリエイトリンクの作成は WP-Amazon 1.3.x を使っています。
WordPress 2.2 にアップデートした際に動作しなくなったり、WordPress 2.5 にアップデートした際にメディアボタンに対応したりとチマチマと手を加えていたプラグインなので、結構愛着もあります。
で、今回 Amazon アソシエイト Web サービスが Product Advertising API に代わり、API 呼び出し時の手順を変えなければならなくなったため、修正しました。
元の WP-Amazon は GPL v.2 で配布されていたプラグインのため、この改変版を Ver.1.4.2 として、WordPress Plugins/JSeries でリリースしました。
よろしければ、お使いください。

ダウンロードと詳細な使い方は、以下のリンクよりお願いします。
WordPress Plugins/JSeries ? wp-amazon (Amazonリンク生成)

オリジナルからの変更点

オリジナルの WP-Amazon からの主な変更点は、以下の4点です。

  • WordPress 2.5以降に対応
  • 多言語対応 (言語リソースは、日本語のみ添付)
  • Amazon 商品検索をメディアボタンから呼び出し
  • 2009年8月15日から開始される Product Advertising API に対応

Amazon 商品検索をメディアボタンから呼び出すため WordPress 2.5 以降のみ対象となります。

Product Advertising API 対応について

2009年8月15日から実施される Product Advertising API への対応は、以下のエントリを参考にさせてもらいました。

ついでなんで、ざっくりと PHP での対応方法をメモ書き程度にエントリしておきます。

  1. 今までのようにリクエストURLを作成
    Timestamp も付けておく。

    $URL =	'http://webservices.amazon.co.jp/onca/xml' .
    	'?Service=AWSECommerceService' .
    	'&AWSAccessKeyId=00000000000000000000' .
    	'&Operation=ItemLookup' .
    	'&ItemId=0679722769' .
    	'&ResponseGroup=ItemAttributes%2COffers%2CImages%2CReviews' .
    	'&Version=2009-01-06' .
    	'&Timestamp=' . urlencode(gmdate('Y-m-d\TH:i:s\Z'));
  2. query 部分をソートしなおす
    「?」以降を「&」で分割し、アルファベット順にソートして、また「&」でくっつける。

    $parsed_url = parse_url($URL);
    $parsed_query = explode('&', $parsed_url['query']);
    sort($parsed_query);
    $query = implode('&', $parsed_query);
  3. シグネチャを作成する
    4行に並べ替え、秘密鍵を使用して「RFC 2104-compliant HMAC with the SHA256 hash algorithm」を適用。

    $signature =
    	"GET\n" .
    	$parsed_url['host'] . "\n" .
    	$parsed_url['path'] . "\n" .
    	$query;
    $signature = base64_encode(hash_hmac('sha256', $signature, $secret_key, true));
  4. 取得したシグネチャをリクエストURLの末尾に付加
    シグネチャはURLエンコードすること。

    $URL =	$parsed_url['scheme'] . '://' .
    	$parsed_url['host'] .
    	$parsed_url['path'] .
    	'?' . $query .
    	'&Signature=' . str_replace('%7E', '~', rawurlencode($signature));

このリクエストURLを使えば、今までどおりに Amazon の API を使用できます。

10 thoughts on “WP-Amazon

  1. mx3_777

    をかもと様
    ありがとうございます。

    自己解決しました。
    色々検証した結果、管理の都合上、wordpressの管理画面をフレーム内にしていたことが原因と分かりました。
    フレームをはずすことにより正常に機能しました。

    こちらの初歩的なミスにより余計なお手間をおかけしてしまったことをお詫び申し上げます。
    本当に迅速かつご丁寧なお返事ありがとうございました。

    今後の益々のご活躍を祈念いたします。

    返信
    1. をかもと 投稿作成者

      mx3_777 さん、どもです。
      解決したようで、良かったです。

      特にプラグインとは関係ない原因のようですね。
      後で、コメント欄を読んだ人が混乱すると悪いので GoogleMaps Anywhere の方に書いていただいたコメントは非表示にさせていただきます。

      また何かあったらお気軽にどうぞ。

      返信
  2. mx3_777

    はじめまして。

    WinXP SP3
    FireFox3.5.3
    WordPress 2.8.4
    php5(チカッパで運用しています。)
    において以下のような現象が起きて困っております。

    WP-Amazon 1.x for WordPress 2.5+バージョン1.4.3
    検索をしてコードを作成するまではできますが、エディタに挿入することや終了ボタンで終了することができません。
    エラーコンソールで見てみると以下のようなエラーが発生しています。

    エディタに挿入の場合
    エラー: top.send_to_editor is not a function
    ソースファイル: http://example.com/zzzzz/media-upload.php?post_id=-1253108808&type=amazon&tab=amazon
    行: 1

    終了の場合
    エラー: top.tb_remove is not a function
    ソースファイル: http://example.com/zzzzz/media-upload.php?post_id=-1253108808&type=amazon&tab=amazon
    行: 1

    WordPress 2.8時点では使えていましたのでもしかしたらWordPress 2.8.4に自動アップデートしてから?と定かではありませんが...
    Google Maps Anywhereのほうにもコメントを書かせていただきましたが、そちらでも同じような?エラーが出ています。
    なにとぞ宜しくお願いいたします。

    返信
    1. をかもと 投稿作成者

      mx3_777 さん、はじめまして。

      私の環境では問題無いのですが、ひょっとすると WordPress が使用するメモリが足りなくなっているのかもしれません。
      wp-config.php の2行目以降 ( <?php より下 ) に以下の一文を追加してみてください。

      define('WP_MEMORY_LIMIT', '48M');

      改善されないようであれば 48M の部分を 64M にしてみてください。
      64M まで大きくしても改善されなければ、原因は他にあるかも知れません。

      これで改善されるようであれば GoogleMaps Anywhere の方も直っていると思います。
      ご確認ください。

      返信
      1. mx3_777

        早速のお返事ありがとうございます。
        ご教示いただいた方法を試してみましたが、やはり改善できません。
        エラーも同じものが出ています。
        他に考えられることはありますでしょうか?

        返信
  3. もんち

    はじめまして。
    すばらしいプラグインを提供していただき有難うございます。
    ayaさんの内容とダブってしまいますが、やはり、地域以外の項目を入力し保存してからでないとリストボックスに国(地域)名が表示されません。
    自分の場合は、FireFox3.5 & IE7 関係なくリストボックスが空欄で選択できませんでした。
    現在は問題なく作動はしています。
    同じく気になったのでご報告までと思い書き込みいたしました。

    返信
  4. aya

    いつもこっそりとお世話になっております。
    プラグインを使わせていただいたのですが、Firefox3.5で、地域の選択が空欄で選択できませんでした。
    IEに切り替えると表示されたので、そちらで設定&更新すると、Firefoxでも表示されるようになりました。
    特に困ったというわけではないのですが、一応ご参考までに報告差し上げます。

    今後ともよろしくお願いいたしますmm

    —–
    すみません、地域以外の項目を編集後、一旦保存すると選択できるのですね 😳
    失礼致しました。

    返信
    1. をかもと 投稿作成者

      aya さん、はじめまして。

      地域以外の項目を編集後、一旦保存すると選択できるのですね 😳

      それは、こちらの意図する動作では無いですね。
      余裕のある時に確認して修正しておきます。
      不具合報告有難うございました。

      返信
  5. ピンバック: Tips Community

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください