WordPressのAmazonJSが機能しない時の解決方法

目次

概要

WordPressで、Amazonアソシエイトを使って、商品の紹介をしたいときに、いい感じに商品を見せることができるAmazonJSというプラグインがあります。

しかし、ある時これがうまく機能しなくなりました。なので、その原因と解決方法をここに書いておきます。

原因

まず、AmazonJSで商品が表示されなくなった原因を説明します。

その原因は、HTTPSという安全(セキュア)な通信において、HTTPという安全ではない(ノンセキュア)情報を表示しようとしているからです。

(HTTPSとHTTPが混在したものをMixed Content と言うようです)

ちなみに、一部のブラウザではこのような状態でも、AmazonJSが正しく動作しますが、最近のブラウザでは動作しないことが多いので、この状態はあまりよくありません。

ここでは、安全な通信で送信されているデータが、ブログ等での投稿者が書いてある内容で、安全ではない通信で送信されているデータがAmazonJSが参照するAmazon アソシエイトの情報です。

なので、その情報を安全な通信で送信するようにすると、正しくAmazonJSが動作するようになります。

解決方法

AmazonJSでは、プラグイン内(wp-content/plugins/amazonjs)の amazonjs.php の部分でAmazon アソシエイトの情報を参照しています。

なので、このファイル内に表示されない原因となる部分があります。

このファイルの一部を書き換えるのですが、ファイルの中に、前後に空白が空いたsrcから始まる下記のようなものがあると思います。記号* は、各自置き換えて考えてください。

'JP' => array(
    'label'              => __( 'Japan', $this->text_domain ),
    'domain'             => 'Amazon.co.jp',
    'baseUri'            => 'http://webservices.amazon.co.jp',
    'linkTemplate'       => '<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=${t}&o=9&p=8&l=as1&asins=${asins}&fc1=${fc1}&IS2=${IS2}&lt1=${lt1}&m=amazon&lc1=${lc1}&bc1=${bc1}&bg1=${bg1}&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>',
    'associateTagSuffix' => '-22',
),

ここを下記のように書き換えます。

'JP' => array(
    'label'              => __( 'Japan', $this->text_domain ),
    'domain'             => 'Amazon.co.jp',
    'baseUri'            => 'http://webservices.amazon.co.jp',
    'linkTemplate'       => '<iframe src="//rcm-jp.amazon.co.jp/e/cm?t=${t}&o=9&p=8&l=as1&asins=${asins}&fc1=${fc1}&IS2=${IS2}&lt1=${lt1}&m=amazon&lc1=${lc1}&bc1=${bc1}&bg1=${bg1}&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>',
    'associateTagSuffix' => '-22',
),

重要なのは、src=“の後の「http:」の部分を消すことです。

これで、安全でない通信でAmazonアソシエイトの情報が送信されることがなくなります。

まとめ

プラグイン内のバグが原因ということで、原因を見つけるのが大変でした。