Liner Note

情報(ユーザー中心デザイン・ユーザビリティ)と技術(ウェブプログラミング・ウェブサービス)についてのメモ書き

要約:WordPressで手軽にAmazonアソシエイトを始められるプラグインです、付加機能もいっぱいあります。

いきさつ

wpj-amazonプラグインがある時期からうまく使えなくなってしまって、んじゃ本家WP-Amazonをいじるかなと思ったらどっこい、最新版はビジュアルエディタ中心になっていて、記事作成画面でビジュアルエディタを使わない人(=私)にとっては事実上、使えないようになっていました。

んで、どうしたもんかと思っていたんですが、そんなところに新たにAmazonプラグインを作っている方がいらっしゃいました。

で、早速ダウンロードして、いろいろ出力をいじってカスタマイズして使っていました。配布元に”JSeries” のライセンスは GPLと書かれていましたので、同じくGPLで公開しておこうと思います。原版を公開されたともかめさん、Keith Devensさんなどライブラリを作られた作者さん方に感謝します。

このプラグインを使用するにはPHP5が動くサーバが必要です。amazon.co.jpのクリック数情報を取得するにはさらに perl / WWW::mechanize(perl) / PEAR::MDB2(PHP) が動くサーバが必要です。

ダウンロード

ダウンロード
Amazon Linkage プラグイン
ライセンス
lite.php: GNU LGPL
amazon.php: GNU GPL v2
その他
WordPressに付属しているものはWordPressのライセンスに、その他はこのサイトのライセンスに準じます

オリジナルとの変更点

ちなみに、このプラグインは初回リリース版を改変して使用しているため、呼び出した商品一覧を見る機能などは実装されていませんのでご了承下さい。

今となっては本家で既に実装されている部分もありますが、主な変更点は以下の通りです。

  • 商品の回り込み表示(左回りこみ、右回りこみ、キャプション風)機能
  • テキスト出力機能
  • タイトルを短くする機能
  • 在庫のあるなしを表示する機能
  • 商品に影を表示(表示しないようにすることも可能)
  • 任意のカバー画像を設定することが可能
  • サムネイルを作るようにした / キャッシュするようにした
  • hReview(microformats)対応
  • ニコニコ市場のようにクリック数・購入者情報を表示できる
  • 国際化(amazon.co.jp限定なので意味なし?)
  • 呼出方法を<amazon>ASIN</amazon>に変更した(本家で一部実装済み)
  • 商品画像がない際、そうした旨の画像を添付するようにした(本家で実装済み)
  • 呼び出せる商品を本とCDに限定しないようにした(本家で実装済み)

導入方法

ファイルを解凍後、ディレクトリごとwp-content/plugins/ディレクトリに入れてください。アップロード後、cacheディレクトリを書き込み可能(パーミッション777)にしたら、管理画面からプラグインを有効化してください。

導入についての補足情報を書きましたので、参考にしてください

使用方法

<amazon>ASIN(,type, extra image)</amazon>という形式で本文に挿入します。

ASINはAmazonの商品管理コードで、入力が必須です。表示したい各商品のASINを入力してください。ASINはamazon.co.jpの各商品ページの真ん中あたりにASIN または ISBNという表記で書いてあります。

typeは出力の方法についての設定で、入力は任意です。現在の所、以下のような値を取ります。

使用例

通常表示(無指定)
  • エラー:サーバ側でエラーが発生しました、このページを再読込してください

何もオプションを指定せず、またはclearオプションを指定すると、以後の要素の回り込みをせず出力します。つまり、<amazon>ASIN,clear</amazon>で、カバー画像付きで出力します。これがデフォルトの設定です


左回りこみ
  • エラー:サーバ側でエラーが発生しました、このページを再読込してください
  • エラー:サーバ側でエラーが発生しました、このページを再読込してください

leftオプションを指定して記述すると、以後の要素を右側に回り込ませるよう、出力します。つまり、<amazon>ASIN,left</amazon>で、カバー画像付きで左回りこみになります。


右回りこみ
  • エラー:サーバ側でエラーが発生しました、このページを再読込してください
  • エラー:サーバ側でエラーが発生しました、このページを再読込してください
  • エラー:サーバ側でエラーが発生しました、このページを再読込してください

rightオプションを指定して記述すると、以後の要素を左側に回り込ませるよう、出力します。つまり、<amazon>ASIN,right</amazon>で、カバー画像付きで右回りこみになります。


小サイズ(右回りこみ)
  • エラー:サーバ側でエラーが発生しました、このページを再読込してください
  • エラー:サーバ側でエラーが発生しました、このページを再読込してください
  • エラー:サーバ側でエラーが発生しました、このページを再読込してください
  • エラー:サーバ側でエラーが発生しました、このページを再読込してください

captionオプションを指定して記述すると、以後の要素を右側に回り込ませるよう、出力します。某livedoor blogみたいスペースは小さいけど、存在感のある配置です。つまり、<amazon>ASIN,caption</amazon>で、カバー画像付きで右回りこみになります。


テキストのみ

この本は、

  • エラー:サーバ側でエラーが発生しました、このページを再読込してください
  • エラー:サーバ側でエラーが発生しました、このページを再読込してください
  • エラー:サーバ側でエラーが発生しました、このページを再読込してください
  • エラー:サーバ側でエラーが発生しました、このページを再読込してください
  • エラー:サーバ側でエラーが発生しました、このページを再読込してください
です!

<amazon>ASIN,text</amazon>だと、テキスト出力になり、文章段落中でも使用できます。

なお、left2/right2/clear2というようにオプションの後に”2″を付けると影を表示しないようにします。

clear
カバー付きビジュアル版。後続の要素には回り込ませない(無設定時のデフォルト値)
left
カバー付きビジュアル版。左に配置して、右側に後続の要素を回り込ませる
right
カバー付きビジュアル版。右に配置して、右側に後続の要素を回り込ませる
caption
カバー付きビジュアル版。右に配置するが、表示するのは著者とタイトルのみ
text
テキスト版で出力する(通常の文章段落の中で使えます)
string
リンクなしのテキスト版で出力する(タグが使えない箇所でも使えます)
left2
カバー付きビジュアル版。左に配置して、右側に後続の要素を回り込ませる。影は表示しない
right2
カバー付きビジュアル版。右に配置して、右側に後続の要素を回り込ませる。影は表示しない
clear2
カバー付きビジュアル版。後続の要素には回り込ませない。影は表示しない

extra imageは画像のURLをここに指定すると、カバー画像として表示することができます。amazonのカバー画像が気にくわない場合やamazonにカバー画像がない場合に使うと便利です。

設定

ダウンロード後に、amazon.phpを開いて設定をしてください。設定箇所は以下の通りです。

PHPソースコード (wp-content/plugins/amazon_linkage/amazon.php)
// Amazon.co.jp アソシエイトID
  var $AssociatesID = "openvista-22";
  // Amazon.co.jp サブスクリプションID
  var $SubscritionID = "10J7BBWBHFNGXM612JR2";
  // 商品タイトルのカッコ付きの部分を削除するかどうか
  // (本のタイトルを短くできますが、良くない結果になることもあります)
  var $use_short_title = true;
  // サムネイル変換の際、リサイズ後の長辺の最大値を記入
  var $resize = 240;
  // 購入数・クリック数情報を表示するか(上級者向け)
  // (trueの場合は"report/readme.txt"に従って下準備をしてください)
  var $show_iteminfo = false;

アソシエイトIDとサブスクリプションIDの取得方法は、適当にGoogle検索して探してください。あくまでこのプラグインはAmazonアソシエイト使用者限定であることにご注意下さい。

なお、変更点でも書いていますが、別途ソフトを導入することで高品質なカバー画像が生成できます(大きな画像をダウンロードして縮小しています)。有効にするには、phpThumb()が必要ですが、導入はご自分で行ってください(なくてもプラグインは使えます) 大きめの画像をリサイズして、高品質なカバー画像を生成しています。バージョン0.3から外部ソフトウェアの導入が不要になり、PHP組み込みのGDを利用するようになりました。さて、設定が終わったら、amazon_linkageプラグインを丸ごとwp-content/pluginsフォルダにアップロードしてください。また、amazon.cssの内容をあなたのスタイルシートに追加してください。もし、与力があってブラウザ判別なんかができる環境でしたら、同梱のopera.css(Opera用補正CSS), safari.css(Safari用補正CSS)も適用するといいと思います。

でもって、管理画面から有効化したら前準備は完了です。

ちょっとした注意点

注意点が一つあって、WordPressのフォーマッタは一行開けて文章を書くと、その部分を段落と認識して<p>タグで囲ってしまうのですが、このプラグインは<div>タグを出力しているため、これを<p>タグで囲ってしまい、自動的にXHTML invalidになってしまいます。

そのための対策として、2種類考えられます。1つは<amazon>と書くときはこのタグをもれなく<div>要素などのブロック要素で囲うこと*1 。しかし、これはいくらなんでも面倒くさすぎで、非効率です。

ので、そのフォーマッタを直にいじります。

PHPソースコード (wp-includes/formatting.phpの58行目あたり)
--    $pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)!', "$1", $pee);
--    $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee);
++    $pee = preg_replace('!<p>\s*(</?' . (substr($allblocks, 0, -1)."|amazon)") . '[^>]*>)!', "$1", $pee);
++    $pee = preg_replace('!\n(\<amazon\>([a-zA-Z0-9]+),text)!', "\n<p>$1", $pee);
++    $pee = preg_replace('!(</?' . (substr($allblocks, 0, -1)."|amazon)") . '[^>]*>)\s*</p>!', "$1", $pee);

WordPress本体のバージョンアップごとにいじらなければならないのが面倒ですが、確実で効率的です。

今後実装したい機能

  • RSSの時でも商品情報を表示する機能(難しいかな?)
  • 管理画面からのASINの検索機能
  • 管理画面からの設定機能
  • 画像データのキャッシュ機能を実装し、AWSへのアクセスを極力減らす

更新履歴

v0.6.4 20080607
caption版の出力コードがおかしなことになる問題を解決
クリック情報がない際に、空タグを出力してしまう問題を解決
v0.6.3 20080317(0.6.2は未リリース)
単体のプラグインとしてうまく機能しないケースがあった問題を解決
カバー画像のみを取り出すオプションを追加(プラグインとしてはあまり必要ない機能なのでマニュアルには割愛)
キャプション版のデザインを変更
購入者情報DBがうまく更新できない問題を解消
そのほか細かな不具合をいろいろと解消
v0.6.1 20080203
購入者レポートを取得するスクリプトを同梱するようにしました
コアサーバーのファイル数上限規制に基づき、キャッシュ方法およびキャッシュフォルダの構成を変更しました
一部画像を変更。famfamfam.com: Silk Iconsのアイコンを利用するようにしました
v0.6 20080104
カートに入れるボタンをつけた
AmazonECS4の最新バージョン(2007-10-27版)を使うようにした
captionオプション指定時の諸処の制限を取っ払った
clearオプションを設定しても回り込みが起きていた問題を修正
値引きがあった時にうまくその旨が表示されていなかった問題を修正
全体的なコードのリファクタリングとフォルダ・ファイル構造の変更など
v0.5.3 20080101
取得に失敗した項目は表示しないように修正
表示乱れ対策のためにタイトルを20文字毎に改行するようにした
影なし設定でも影が出てしまう問題を修正
右側回り込みが上手くできていなかった点を修正
細かなHTML表記の修正
v0.5.2 20071231
プラグインをWordPressなしで単独でも動くようにした(その際はwordpress/functions.phpでパスを設定の上、WpAmazonクラスのgetAmazonメソッドを使ってください)
textオプションのリンクなしバージョンであるstringオプションを追加
v0.5.1 20071227
不要な処理をして、処理に時間がかかっていた問題を解消
データのキャッシュに失敗していた問題を解消
演奏者の名前の表示に失敗していた問題を解消
コードを構造化し、ソースの可読性を高めた
v0.5 20071223
個別記事ページ以外では呼び出さないようにした(これにより全体的な動作速度が改善されます)
値引きがある場合、値引き後の価格と割引率を表示するようにした
XMLの処理にKeith Devens氏のPHP XML ライブラリを使わずに、PHP5標準のSimpleXMLを使うようにした(よって、PHP5のみのサポートになります)
9桁ISBN(チェック・デジット抜き)や新しいISBNである13桁ISBNに暫定的に対応しました
PHPコーディング規約に沿うようにスクリプトを編集
v0.4 20071111
hReview(microformats)に対応
購入数・クリック数情報の表示に対応
v0.3 20070923
PHP組み込みのGDを利用し、サムネイルを作成するようにした(外部ソフト不要)
画像をキャッシュして、Amazon ECSへの負担を減らすようにした
サムネイルが正しいサイズで表示されない問題を修正
スタイルシートを見直した結果、ブラウザ別補正CSSが不要になった
内部コードの可読性を上げた
v0.2 20070914
任意のカバー画像を設定できる機能を追加
在庫切れや発売前など入手できない状況にある場合は、その旨を表示するようにした
自動サムネイル化を設定している場合、イメージがサムネイルの設定サイズより小さい場合はリサイズしないようにした
各パラメータに含まれたスペースを削除するようにした
リサイズ対象単位を「高さ」から「長辺」に変更
カバー画像に影を付けないようにする表示設定を追加
カバー画像が無いときに表示が乱れる問題を解決
タイトルの表示スタイルを修正
その他細かなバグ修正
v0.1.1 20070902
作者の表記を修正
microformats的に商品へのリンクにclass="item"を付け足した
文頭でテキスト出力で呼び出したときに、p要素でマークアップされない問題を解消(formatting.php)
v0.1 20070817
語句を一部修正
v0.1 20070813
初回リリース
  1. WordPressはXHTMLのブロック要素は<p>タグで囲わないようになっています[戻る]
キーワード:

似たもの記事

読者の皆さんの反応サイト内コメントの更新情報(RSSフィード)

読者のコメント

16

ブックマークコメント

5

他サイトの関連記事

3

読者のコメント

  1. お名前

    xxx

    投稿日時
    2008年01月12日
    3時ごろ
    Comment No
    #1

    Pluginを有効化しようとした際に
    Plugin could not be activated because it triggered a fatal error.
    と、表示されてしまう場合はどのあたりを見直せばよろしいでしょうか?
    改行コードをLFにしてみたのですが、動作しておりません。
    お時間ある時にコメントいただけるとありがたいです。

  2. お名前

    xxx

    投稿日時
    2008年01月12日
    23時ごろ
    Comment No
    #3

    pearのMDB2がインストールされておりませんでした。
    お手数おかけいたしました。

  3. お名前

    しむ

    投稿日時
    2008年03月29日
    2時ごろ
    Comment No
    #4

    はきめまして。
    >カバー画像のみを取り出すオプションを追加
    >(プラグインとしてはあまり必要ない機能なのでマニュアルには割愛)
    とありますが、これは商品画像のみを表示して
    他の要素(商品名、価格、カートへのボタン等)を
    表示しない設定にできるという事でしょうか?

    また、表示する要素を細かく設定するコトはできますか?
    (例:商品名は非表示とか、価格のみ表示する等)

    また、サイドバー内で使用する事は可能でしょうか?

    いきなり質問ばかりで申し訳ないですが
    お答えいただけるお大変助かります。

  4. お名前

    名無しさん

    投稿日時
    2008年09月29日
    18時ごろ
    Comment No
    #6

    こんにちは

    早速ですがお願いがあります。

    このプラグインを使おうとダウンロードしインストールしたのですが、投稿記事内では表示できたのですが、ページで表示できないので困っています。

    ページでも表示できるようにならないでしょうか?

  5. お名前

    名無しさん

    投稿日時
    2008年11月30日
    10時ごろ
    Comment No
    #9

    #6のものです
    バグを発見したので報告いたします。
    ASINにDVDなどを選ぶと表示される際に「収録時間 *時間**分」と表示されます。
    で、問題はここからなのですが、どうもこの「収録時間 *時間**分」がこの後に表示する商品にも出てしまい、コンピュータ関係の商品なのに、「収録時間 *時間**分」と表示されてしまいます。

    それとページ内で表示する方法ですが、function replaceCode($content)
    で、 return $content;の前にelseif (is_page()){ (後はis_singleと同じ内容)とすればページ内でも実行できるようです。これを応用すればhome内でも実行できそうな気がしますが、試していないのでわかりません。

    以上二つです。それと長文失礼します。

  6. お名前

    名無しさん

    投稿日時
    2008年12月24日
    10時ごろ
    Comment No
    #11

    こんにちは、はじめまして
    Amazon Linkageのaccess.phpを参考にさせて頂いております。
    12月頃からamazonの認証の仕方が変わったのか
    xmlが取得できなくなっていまして
    (いつのまにやらサインインの画面しか取得できず…)
    levaさんのほうでは、特に問題なくリポートを取得できていますでしょうか?

  7. お名前

    #11

    投稿日時
    2008年12月26日
    21時ごろ
    Comment No
    #13

    返信ありがとうございます。
    環境はphp4でhttp_build_queryの部分はphp5が動くサーバーで
    結合済みのテキストをソース内で直接代入しています。
    使用しているのはaccess.phpのgetReport()ファンクションの部分のみなのですが
    ログインや取得POST時の$response['body']を出力すると
    まっさらなログイン画面しかありません。
    わざと間違ったパスワードを投げるとちゃんと警告画面が帰ってきていますので
    正しく認証はされていると思うのですが…
    今までは取得できており、現状のパラメータで問題なく継続使用されているのか御質問いたしました

  8. お名前

    #11

    投稿日時
    2008年12月28日
    22時ごろ
    Comment No
    #15

    その後、新しいログインフォームに追加されていたsessionIdなどのhidden要素をpost項目に追加して
    リダイレクトを許可したcurlでクッキーを再現しながら繋いだところ、注文レポートは取得できました
    HTTP Clientでも同じものを送信しましたが駄目でした…

    大変お手数をおかけいたしました。ご返信ありがとうございました

  9. お名前

    名無しさん

    投稿日時
    2010年01月24日
    19時ごろ
    Comment No
    #16

    …使えなくなっていませんか?

    ずっと使ってきていましたがおかしいです
    エラー:サーバ側でエラーが発生しました、このページを再読込してください
    と表示されます

    どうにかなりませんか?

はてなブックマークでつけられたコメント

asiamothさんのプロフィール画像  asiamoth
WP の Amazon リンク用プラグイン。
似たようなプラグインの中で、表示が一番きれい。
atsushifxさんのプロフィール画像  atsushifx
AMAZONタグでAMAZONへの阿曾氏英とリンクを作るWordPressのプラグイン(タグ:AMAZONアソシエイト, WordPress, プラグイン,)
trick1さんのプロフィール画像  trick1
使ってみようとしたら、nicolinkと相性が悪いのかpearのHTTP_Requestでエラー出ちゃいました。
saitoudaitokuさんのプロフィール画像  saitoudaitoku
よさそう
sto-zweiさんのプロフィール画像  sto-zwei
wordpress

他サイトの関連記事

  1. ウェブサイト

    近頃の、とあるR。 » amazonリンクのプラグイン

    投稿日時
    2008年05月04日
    0時ごろ
    Comment No
    #1

    [...] amazon_linkage 画像キャッシュフォルダがたっぷり生成される。php5必須。 やはりASINを調べるのが面倒くさい。 [...]

  2. ウェブサイト

    amazon associates « なまにっき

    投稿日時
    2009年07月29日
    22時ごろ
    Comment No
    #2

    [...] 結局すぐには本の感想書けないのでした。 word press にどうやって貼るかって件については こちらを利用させていただこうかと思っています。 有名どころのツールは調べれば大抵ほしいも [...]

  3. ウェブサイト

    続amazon associates « なまにっき

    投稿日時
    2009年08月01日
    22時ごろ
    Comment No
    #3

    [...] 単行本 ( 239 ページ ) 前回 amazon-linkage-plugin を使うって言いましたけどなんかうまく動かない。 ので、代わりにwp-tmkm-amazonを使うことに。 設置後、CSSをちょっといじっておk。 テスト [...]


トラックバックとは
この記事に言及したサイトをこちらに掲載する仕組みをトラックバックと言います。ここでは、このサイトに頂いたトラックバックを一覧表示しています。
トラックバックしてくださる方へ
この記事への言及がない記事など、トラックバック受信方針に沿っていないものは、読者にお見せしても仕方ないこともあり削除させていただいることをご了承ください。
トラックバックを受け取るためのURI

コメント書き込みフォーム

  • メールアドレスはウェブ上で公開したり、連絡以外で使うことはありません
  • コメントを公開したくないが、作者に連絡を取りたい場合は メールで連絡してください
  • 本文中にHTMLコードは使用できません(URLはそのままお書きください)