Amazon Product In a Post Plugin

amazon-web-services
  • ????????????????????

WordPress で書評などを書くときに便利な Amazon Product In a Post Plugin (AmazonPIP)を導入してみました。
こんなかんじ↓
[AMAZONPRODUCT=4774144371]
しかし、「amazonアソシエイトを始めてみる-wordpress plugin編-」 にもあるように、Wordpress では amazon 関連の決定版ともいえるツールがないのが現状のようです。

AmazonPIP の機能は ASIN 指定の固定リンクを生成するだけなので、キーワードなどに関連したアマゾンリンクを生成したい人には不向きかもしれません。

AmazonPIP を導入してみると(導入はマニュアルを読んでください。Amazon Web Service の公開鍵、秘密鍵が必要です)、日本語が通らない、スタイルが公式ページにあるスクリーンショットと異なる、などの問題点がありましたが、少し hack したらつかえるようになりました。そのときのメモを残しておこうと思います。

日本語が文字化けする

プラグインの編集 → amazon-product-in-a-post-plugin/inc/aws_signed_request.php で GetXMLTree 関数を次のように修正してください。

// $parser = xml_parser_create ('ISO-8859-1'); // オリジナル
$parser = xml_parser_create ('UTF-8'); // 修正

これで日本語は通るようになります。

スタイルがおかしい

具体的には CSS の float が効かない、という問題です。これは使っているテーマに依存するようですが、私の使っているテーマでも発生しました。海外のフォーラムを読んでみると

Well I have a solution – a bit messy but a solution.

In the twentyten css, both the h2 and hr elements have clear:both attached to them.

という記述を見つけました。Wordpress のデフォルトテーマはこれが設定されているため、そこから派生したテーマもこのようになっていることがあります。これを何とかしましょう。いくつかのアドホックな解決方法が思いつきます。

CSS の h2, hr の clear: both; の記述を削除してしまう

一番簡単ですね。しかし、ほかの部分に影響がでるかもしれず、その意味でロバストな解決ではないと思います。

ソースを修正

この部分に関連するのは amazon-product-in-a-post-plugin/amazon-product-in-a-post.php の getSingleAmazonProduct 関数です。
ここから h2 と hr に関連する記述を見つけましょう。

// オリジナル
// $returnval .= '<h2 class="amazon-asin-title"><a href="' . $result["URL"] . '" '. $apippnewwindowhtml .'><span class="asin-title">'.$result["Title"].'</span></a></h2>'."\n";
// スタイルに clear: none; を追加
$returnval .= '<h2 class="amazon-asin-title" style="clear: none;"><a href="' . $result["URL"] . '" '. $apippnewwindowhtml .'><span class="asin-title">'.$result["Title"].'</span></a></h2>'."\n";

として、さらに hr に関しても

// オリジナル
// $returnval .= '<hr noshade="noshade" size="1"/>'."\n";
// スタイルに clear: none; を追加
$returnval .= '<hr noshade="noshade" size="1" style="clear: none;"/>'."\n";

としましょう。この方法では(私が使っているテーマだと)hr が長くなりすぎるという問題があったので、さらに hr に関して

$returnval .= '<hr noshade="noshade" size="1" style="clear: none; width: auto;"/>'."\n";

とかしてみたらうまくいきました。

まとめ

  • AmazonPIP は多少の修正で使えるようになる
  • 見た目は結構きれいで個人的には気に入っている
  • バージョンアップ時にはこの修正を繰り返さなければならない!(ToT)
  • キーワードでマッチさせて商品リンクを作る手段はない
  • もっとよい方法を知っている人がいたら、教えてください

追記

日本語化のための hack に関するエントリーを書きました。

はてなブックマーク - Amazon Product In a Post Plugin
Pocket