ラノベ感想用 : Amazon と honto へのリンクを作成するショートコード

bk1 がリニューアルして honto とサービス統合されたため、過去のエントリで書いていたラノベの感想など含まれている bk1 へのリンクが無効になってしまったので、使用中のショートコードを書き換えました。

コード

以下のコードを functions.phpにでも追記しておけば、ショートコードが利用可能になります。

{アソシエイトID} やら {a8mat番号} やらは各自の環境で書き換えてください。リンク用の文字列に画像などを使用したい場合は、amazontext および hontotext に直接 img タグを使用して表示してます。

<?php
function amazon_honto_shortcode( $atts, $content = null ) {
    extract(shortcode_atts(array(
	"asin"=> '',
	"separator"=> ' ',
	"amazontext"=> 'Amazonで検索',
        "hontotext"=> 'hontoで検索',
    ), $atts));

    $regex = '/^[A-Za-z0-9]+$/';
    if (!preg_match($regex,$asin,$match)) {$asin='';}

//Amazonへの商品リンク
    $amazonlink = 'http://www.amazon.co.jp/exec/obidos/ASIN/'.$asin.'/{アソシエイトID}/';
    $amazontrackcode = '<img src="http://www.assoc-amazon.jp/e/ir?t={アソシエイトID}&l=as2&o=9&a='.$asin.'" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />';

//hontoへの商品リンク(ISBNコード検索結果ページ)
    $hontolink  = 'http://px.a8.net/svt/ejp?a8mat={a8mat番号}&a8ejpredirect=http%3A%2F%2Fhonto.jp%2Fnetstore%2Fsearch_021_10'.$asin.'.html';
    $a8trackcode='<img border="0" width="1" height="1" src="http://www19.a8.net/0.gif?a8mat={a8mat番号}" alt="">';

    return '<a href="'.$amazonlink.'" title="Amazon でこの商品をチェック">'.$amazontext.'</a>'.$separator.'<a href="'.$hontolink.'" title="honto でこの商品をチェック">'.$hontotext.'</a>'.$amazontrackcode.$a8trackcode;
}

add_shortcode('amazon_honto', 'amazon_honto_shortcode');
?>

ショートコードの使い方

リンクしたい作品のASINコードを指定して該当ページへのリンクを作成します。

[amazon_honto asin="書籍のASIN"]

Amazonにおける書籍の ASIN は旧タイプの ISBN-10 と同じなので、それを指定してやります。

honto 側は ISBN 直指定で特定の書籍のページを表示することができないようなので、検索結果のページへのリンクを作成しています。

テストしてみた感じでは、クリックのカウントなどもされているので大丈夫だとは思いますが、おかしいようでしたら突っ込みをいただければ助かります。