WordPressの本文にAmazonのURLを貼り付けるだけで、アフィリエイトリンクを生成できるようにする

  1. 公開日:2016/05/14
  2. 更新日:
  3. WordPress
  4. 0
3
SHARES
B!

先日、WordPressの本文にApp StoreのURLを貼り付けるだけで、アフィリエイトリンクを生成できるようにするで、App StoreのURLをWordPressの本文に貼り付けるだけで、アフィリエイトリンクを作成する方法をご紹介しましたが、今回はAmazon版です。

https://ottan.xyz/wordpress-app-store-itunes-link-affiliate-4120/

Amazonの商品情報を取得するためには、Amazon Product Advertising APIを使用します。このAPIの制約の一つに、「1リクエスト/秒」という制限があります。この制約を超えて使用した場合、リクエストに制限を受けてしまう可能性があるため、これを回避するためにも、前回と同様、一度取得した情報はWordPressのキャッシュとして保存するようにします。

AmazonのURLからアフィリエイトリンクを生成する

AmazonのURLは複雑です。単純にAmazonのリンクを貼り付けるだけで、そのURLを動的に解析してアフィリエイトリンクを生成するのは至難の技です。

また、Amazon Product Advertising APIの利用方法も複雑です。そのため、GitHubで公開されているライブラリを使用します。

AmazonのURLを編集する

例えば、Kindle Paperwhiteの詳細ページのURLは以下のような構造をしています。今回は、このURLに含まれるB00QJDOM6Uというキーワードに注目します。これは、ASIN(Amazon Standard Identification Number)と呼ばれる、Amazonで販売されている商品を識別するための一意のIDです。これをキーにAmazonの商品情報を検索することができます。

http://www.amazon.co.jp/Amazon-DP75SDI-Kindle-Paperwhite-Wi-Fi、ブラック/dp/B00QJDOM6U/ref=sr_1_2?s=digital-text&ie=UTF8&qid=1463206906&sr=1-2&keywords=kindle+paperwhite

しかし、毎回毎回Amazonの商品ページからASINを探し出すのは非常に面倒です。そこで、以下のブックマークレットを使用します。任意のページをブックマークに追加し、アドレスに以下のコードを貼り付けます。

例えば、Safariのお気に入りに追加する場合は、以下のようなイメージです。ブックマークの名称は任意に変更してください。

そして、Amazonの商品詳細ページを開いた状態で、作成したブックマークレットをクリックすると、以下のようなURLに自動的に遷移します。下記は、先ほどのKindle Paperwhiteの場合です。

http://www.amazon.co.jp/dp/B00QJDOM6U

実は、AmazonのURLは、http://www.amazon.co.jp/dp/<ASIN番号>という形式でもアクセスできるようになっています。WordPressの本文にはこのURLを貼り付けて使用するようにします。

Amazon Product Advertising APIを使用してAmazonの商品情報を取得する

次に、Amazon Product Advertising APIを使用するための事前準備を行います。APIを使用するためには、Amazon Web Services(AWS)のアカウントと、アクセスキーID、秘密アクセスキーが必要です。AWSのアカウントのメールアドレスは、Amazonアソシエイトで使用しているメールアドレスと同一である必要があります。以下のリンクから新規作成してください。

https://affiliate.amazon.co.jp/gp/advertising/api/detail/main.html

また、アクセスキーIDと秘密アクセスキーは、以下のURLを参照して取得してください。

http://www.ajaxtower.jp/ecs/pre/index1.html

次に、Amazon Product Advertising APIを使用するためのライブラリをダウンロードします。以下のリンクにアクセスしてください。

https://github.com/Exeu/apai-io

「Download ZIP」と書かれたリンクからZIPファイルをダウンロードしてください。

解凍してできたフォルダ(apai-io-master)の中の「lib」フォルダの中にある「ApaiIO」というフォルダをコピーしておいてください。

次に、以下のソースコードをclass-amazon-link-builder.phpという名称で保存します。このPHPファイルと同一階層に先ほどコピーした「ApaiIO」フォルダをコピーします。そして、functions.phpから、class-amazon-link-builder.phpを読み込んでください。

2016/05/20追記

価格情報を取得できないことがあるためソースコードを一部修正しました。詳細はGistをご覧ください。

Amazon Link Builderの使い方と制限事項

今回ご紹介したAmazon Link Builderの使い方と制限事項です。

  • AWS_API_KEYには、事前に取得したAWSのアクセスキーIDを入力してください
  • AWS_API_SECRET_KEYには、事前に取得したAWSの秘密アクセスキーを入力してください
  • AWS_ASSOCIATE_TAGには、Amazonアソシエイトタグ(XXXXX-22の形式)を入力してください
  • 対象となるURLは、http://www.amazon.co.jp/dp/<ASIN番号>という形式のみです
  • 上記URLの変換には、冒頭でご紹介したブックマークレットを使用すると便利です
  • テンプレートとなるHTMLは各サイトに合わせて自由に改変して使用してください
  • $results変数に格納されている値は連想配列です。取得できる項目は以下を参照してください

$results変数で取得できる項目は以下の通りです。テンプレートとなるHTMLに応じて取得する値を変更してください。

array (size=9)
  'ASIN' => string 'B00QJDOM6U' (length=10)
  'ParentASIN' => string 'B00U878M00' (length=10)
  'DetailPageURL' => string 'http://www.amazon.co.jp/Amazon-DP75SDI-Kindle-Paperwhite-Wi-Fi%E3%80%81%E3%83%96%E3%83%A9%E3%83%83%E3%82%AF/dp/B00QJDOM6U%3Fpsc%3D1%26SubscriptionId%3DAKIAJGFJDDBQ6RAL7MGA%26tag%3Dottan-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB00QJDOM6U' (length=267)
  'ItemLinks' => 
    array (size=1)
      'ItemLink' => 
        array (size=4)
          0 => 
            array (size=2)
              ...
          1 => 
            array (size=2)
              ...
          2 => 
            array (size=2)
              ...
          3 => 
            array (size=2)
              ...
  'SmallImage' => 
    array (size=3)
      'URL' => string 'http://ecx.images-amazon.com/images/I/51ra15u4L0L._SL75_.jpg' (length=60)
      'Height' => string '75' (length=2)
      'Width' => string '75' (length=2)
  'MediumImage' => 
    array (size=3)
      'URL' => string 'http://ecx.images-amazon.com/images/I/51ra15u4L0L._SL160_.jpg' (length=61)
      'Height' => string '160' (length=3)
      'Width' => string '160' (length=3)
  'LargeImage' => 
    array (size=3)
      'URL' => string 'http://ecx.images-amazon.com/images/I/51ra15u4L0L.jpg' (length=53)
      'Height' => string '500' (length=3)
      'Width' => string '500' (length=3)
  'ItemAttributes' => 
    array (size=24)
      'Binding' => string 'エレクトロニクス' (length=24)
      'Brand' => string 'Amazon' (length=6)
      'CatalogNumberList' => 
        array (size=1)
          'CatalogNumberListElement' => string '53-003587' (length=9)
      'Color' => string 'ブラック' (length=12)
      'EAN' => string '0848719056617' (length=13)
      'EANList' => 
        array (size=1)
          'EANListElement' => string '0848719056617' (length=13)
      'Feature' => 
        array (size=7)
          0 => string 'カラーは定番のブラックに新色のホワイト' (length=57)
          1 => string '小さな文字もくっきりキレイ。300ppiの高解像度で今まで以上に美しく' (length=93)
          2 => string '直接目を照らさないフロントライト方式で、目に優しい' (length=75)
          3 => string '紙のように読みやすいEインクで長時間の読書も疲れにくい' (length=79)
          4 => string '軽くて持ちやすいから、通勤・通学中も片手で読書' (length=69)
          5 => string '本棚のスペースに困らない。数千冊がこの一台に(一般的な書籍の場合)' (length=95)
          6 => string '最新のベストセラーなど豊富な品ぞろえを低価格で。無料で読める名作も' (length=99)
      'ItemDimensions' => 
        array (size=4)
          'Height' => string '36' (length=2)
          'Length' => string '665' (length=3)
          'Weight' => string '45' (length=2)
          'Width' => string '461' (length=3)
      'Label' => string 'Amazon' (length=6)
      'ListPrice' => 
        array (size=3)
          'Amount' => string '16280' (length=5)
          'CurrencyCode' => string 'JPY' (length=3)
          'FormattedPrice' => string '¥ 16,280' (length=10)
      'Manufacturer' => string 'Amazon' (length=6)
      'Model' => string 'DP75SDI' (length=7)
      'MPN' => string 'DP75SDI' (length=7)
      'PackageDimensions' => 
        array (size=4)
          'Height' => string '118' (length=3)
          'Length' => string '669' (length=3)
          'Weight' => string '84' (length=2)
          'Width' => string '512' (length=3)
      'PartNumber' => string 'DP75SDI' (length=7)
      'ProductGroup' => string 'Amazon Ereaders' (length=15)
      'ProductTypeName' => string 'AMAZON_BOOK_READER' (length=18)
      'Publisher' => string 'Amazon' (length=6)
      'ReleaseDate' => string '2015-06-30' (length=10)
      'Size' => string '4 GB' (length=4)
      'Studio' => string 'Amazon' (length=6)
      'Title' => string 'Kindle Paperwhite Wi-Fi、ブラック' (length=38)
      'UPC' => string '848719056617' (length=12)
      'UPCList' => 
        array (size=1)
          'UPCListElement' => string '848719056617' (length=12)
  'OfferSummary' => 
    array (size=5)
      'LowestNewPrice' => 
        array (size=3)
          'Amount' => string '16280' (length=5)
          'CurrencyCode' => string 'JPY' (length=3)
          'FormattedPrice' => string '¥ 16,280' (length=10)
      'TotalNew' => string '1' (length=1)
      'TotalUsed' => string '0' (length=1)
      'TotalCollectible' => string '0' (length=1)
      'TotalRefurbished' => string '0' (length=1)

ポイント

Amazon Link Builderのポイントを簡単にご紹介します。

  • wp_embed_register_handler()でパターンにマッチしたURLをショートコードに変換する
  • 毎回、Amazon Product Advertising APIを使用して商品情報を取得すると、WordPressの動作が重くなるの、またAPIの制限に引っかかる可能性があるので、取得した情報はWordPressのTransient APIを使用してキャッシュとして保持する(キャッシュ期間は1日)
  • テーマやCSSが変わった場合に変更するのは、このクラスのdisplay()関数だけ!
  • Amazonの価格情報はセールなどで随時変更されるため書き方に要注意
  • 場合によっては動かないことがあるかもしれません。コメント欄で教えていただけると助かります

まとめ

とりあえず、お試しで作成してみました。既に似たようなプラグインは多数公開されているかもしれませんが、機能を最低限に絞りました。ご要望やバグ発見時にはコメント欄、または@ottanxyzまで教えてくださいね。

この記事が気に入ったらいいねしよう!
こちらの記事も読まれています
ご意見ボード
匿名で管理人に送信されます。※送信専用です。返信はできません。
ご指摘・ご意見
Top