WordPressでAmazonのリンクを貼り付けたいときは、どうするか。

WordPressでAmazonのアフィリエイトを使って商品を掲載しようとしたとき、方法はいくつかあります。おおまかには、WordPressのプラグインを使う方法とhtmlを貼り付けるもの。後者はさらに、ウェブ上のサービスを使って生成する場合と、自分で作る場合にわけられます。自分で作る場合はAmazonのAPIを使うこともできるし、手作業で作ることもできます。というふうにいろんな方法があるのだけど、結論から言うと「これで間違いなし」と言えるようなイチ押しはないです。だから、どの方法をとればいいのか結構悩んでしまうのです。
WordPress程のメジャーなシステムでプラグインとしてAmazonのリンクを扱える決定的なものがないというのはちょっと予想していませんでした。Amazonからデータを取得して整形することは簡単にできるようになっているので、当然「これは定番」というようなものがあると決めてかかってたのです。
なぜ決定的なものがないかというと、「かつてはあったけれど、開発が停止してしまった」かららしいです。確かに継続的なサポートが難しいのはわかりますし、無理もないとも思います。Amazonが公式プラグインを作ってくれればうれしいけど、そこまでは求めすぎか…。あるいは、どこかの会社で相応なサービスはしてくれないかな。

さて。
こういうような迷いにはやはり偉大な先人がいて、検証や考察をしてくださってます。

  1. amazonアソシエイトを始めてみる-登録編- ? atl*weblog
  2. amazonアソシエイトを始めてみる-リンク生成サービス編- ? atl*weblog
  3. amazonアソシエイトを始めてみる-wordpress plugin編- ? atl*weblog
  4. amazonアソシエイトを始めてみる-結局どうしたの編- – atl*weblog

私もほぼ同様の道筋を辿りました。
サービス停止や仕様の変更といったリスクを回避できるのはAmazon標準の商品リンクですが、デザイン的にちょっとなじめないし情報は見づらいし、で却下。ちなみにわたしはhtml的にvalidじゃなくなってしまうことはもはや気にならなくなりました(かつてはすごく気にしてました)。

わたしが次に考えたのはWordPressのプラグインでした(atl*weblogさんとは異なる順)。しかし日本語対応の壁が高かったり更新が停止してたりデザイン的に手を加えたくなったりで、安心して任せられるものは見当たらなかったというのが実情。どれかを選んで使い始めても、将来開発が停止したらかなり面倒なことになります。

続いて、ウェブ上のAmazonリンク生成サービスを検討しました。小粋空間: Amazon アソシエイト作成支援ツール一覧にあるようにたくさんありますが、すでにサービスが終わってたり継続使用に不安が漂うものもあります。実質、amazletG-Toolsのどちらか、でしょう。
実はG-Toolsは以前P_BLOG時代に使っていまして性能面にはほぼ満足していたのですが、いつの間にか価格表示ができなくなってしまいました。価格を表示するためには、現在のAmazonの価格との乖離を防ぐためか動的に情報を取得・更新する必要があるのですが、そのあたりの仕組みがばっさりと削られてしまったようです。この変更についてはサイトに情報は見つけられず、そういう意味でも残念です。

ということで、わたしもatl*weblogさんと同じくamazletのお世話になることとしました。また、わたしも「target=”_blank”」が不要でしたので、atl*weblogさんのグリモンスクリプト「no blank amazlet」を使わせていただくことにしました。

が、残念なことに「no blank amazlet」はわたしの環境(SnowLeopard + Safari 4.0.3 + GreaseKit 1.7)では動作しませんでした。コンセプトをありがたく拝借して自分で書き換えることとし、ついでに下記の変更も盛り込むことにしました。

  • 「target=”_blank”」が不要(atl*weblogさんと同じ)
  • 画像にドロップシャドウをつけたい
  • 「売り上げランキング」不要
  • 画像にtitle属性をつけたい
  • すぐにコピーしたいので「商品情報リンク (レビューなし/スタイルなし)」テキストを選択状態に
  • 不要な項目を非表示にしたい

本当は値段も掲載したいところですが、規約上できないので見送りです。どうしても金額が必要なときは、記事中で触れるようにすればいいでしょう。

// ==UserScript==
// @name           no blank amazlet plus
// @namespace      http://www.aynimac.com/
// @description    no blank amazlet plus (based on http://weblog.atl-r.net/blog/amazon_affiliate_end/ )
// @include        http://app.bloghackers.net/amazlet/*
// ==/UserScript==

/* UTF-8 */

(function(){
    ne=document.getElementsByClassName('amazlet-box');
    ne[0].style.display="none";

    // 「コピー ( IEのみ )」「戻る」ボタンを非表示に
    ib=document.getElementsByTagName('INPUT');
    for (i=0; i<ib.length; i++) {
        if ((ib[i].value == 'コピー ( IEのみ )') || (ib[i].value == '戻る')) {
            ib[i].style.display="none";
        }
    }

    // 使用しないテキストエリアを非表示に、表示するものは内容を置換する
    ta=document.getElementsByTagName('TEXTAREA');
    for (i=0; i<ta.length; i++) {
        if (i<2) {
            ta[i].style.display="none";
        } else {
            ta[i].value = replaceTextareaValue(ta[i].value);
        }
    }

    // 「レビューなし/スタイルなし」の文字列を全選択する
    ta[4].focus();
    ta[4].select();


    // テキスト置換関数
    function replaceTextareaValue(value) {
        var oStr = '';
        if (value.length) {
            oStr = value;
            // 「target="_blank"」削除
            oStr = oStr.replace(/ target=\"_blank\"/g,'');
            // 画像にドロップシャドウを追加
            oStr = oStr.replace(/_.jpg/g,'_PA10,6,6,8_.jpg');
            // 「売り上げランキング」削除
            oStr = oStr.replace(/売り上げランキング: \d+/,'');
            // img要素にtitle属性を追加
            oStr = oStr.replace(/alt=\"(.+?)\"/,"alt=\"$1\" title=\"$1\"");
        }
        return oStr;
    }

})();

で、こんなふうに。 🙂

バクマン。 5 (ジャンプコミックス)
大場 つぐみ
集英社 (2009-11-04)

(↑ 作者名が原作しか出てないですが…。)

しかし昨日テストしているときに、amazletで一部の商品ページからブックマークレット経由で直接にはリンクを作れないことがありました。今もう一度チェックしてみると昨日ダメだった商品もうまくいくようになってるな…。タイミングが悪かったのか、何か勘違いしてたのか。
様子を見てみます。

2009.11.13追記:やっぱりAmazonの商品ページからAmazletブックマークレットを実行してもうまくリンクを生成してくれないときがあります。上の「バクマン。」でもダメなときがありました。 🙁 なんだろう…?)

カテゴリー: サイト運営 タグ: , , パーマリンク


Fatal error: Uncaught Error: Call to undefined function advman_ad() in /home/cheetah/aynimac.com/public_html/wp/wp-content/themes/twentyten_2/single.php:62 Stack trace: #0 /home/cheetah/aynimac.com/public_html/wp/wp-includes/template-loader.php(74): include() #1 /home/cheetah/aynimac.com/public_html/wp/wp-blog-header.php(19): require_once('/home/cheetah/a...') #2 /home/cheetah/aynimac.com/public_html/index.php(17): require('/home/cheetah/a...') #3 {main} thrown in /home/cheetah/aynimac.com/public_html/wp/wp-content/themes/twentyten_2/single.php on line 62