上のような、アマゾンの本とかDVDのリンク。
asin番号と簡単なタグを打ち込むことで、自動的に生成される仕組み。
以前から自前で作ってるんですが、今回がんばってWordpressのプラグインにしてみました。
けっこう苦労してしまった(⌒_⌒;)
別に難しいことは何もしてないはずなのに、土曜日から始めて、4日ががりに。20時間以上を費やしてしまったかも。とほほ。
たいへんぞんざいなコードなんですが、せっかく作ったんで、恥ずかしながらさらしておきます。
WPにはアマゾンを扱うプラグインもすでにたくさんあるのだけれど、どれもゴージャスすぎてかえって使いづらい。
これくらいシンプルなほうが、かえってカスタマイズしやすいし(言い訳)。
もうちょっと完成度が上がったらパッケージにして配布するかも(しないかも)。
<?php
/*
Plugin Name: AMAZkunEX
Plugin URI: http://www.overcube.com/wordpress/
Description: うちのブログにアマゾンリンクをつけるプラグイン。
Author: overQ
Version: 1.0
Author URI: http://www.overcube.com/wordpress/
*/
add_filter('the_content', 'amazkunex',10000);
function amazkunex ($content) {
$amaz_pattern = "<amazkunBook>(.*)</amazkunBook>";
if (preg_match_all ( "/".$amaz_pattern."/", $content, $matches )) {
foreach( $matches[1] as $amaz_val ) {
$amaz_nakami = file_get_contents("http://ecs.amazonaws.jp/onca/xml?Service=AWSECommerceService&SubscriptionId=ここにサブスクリプションIDが入る&Operation=ItemLookup&IdType=ASIN&ItemId=$amaz_val&ResponseGroup=Large&Version=2005-10-05&AssociateTag=ここにアソシエイトIDが入る&Style=ここに整形用のXMLのURIが入る");
$okikae = ‘<div class="amazkun">’.$amaz_nakami.’</div>’;
$content = str_replace(’<amazkunBook>’.$amaz_val.’</amazkunBook>’,$okikae,$content);
}
}
echo $content;
}
?>
Amazonアフィリエイト、ディベロッパーのIDが必要。整形用のXMLも要自作。
amazkunex.phpとか、適当な名前をつけて、プラグインフォルダにアップし、管理画面でプラグインを有効に。
商品のasin番号を次のようなタグでくくってやると、表示されるはず。CSSとかのデザインも自前で作成のこと。
<amazkunBook>asin番号</amazkunBook>
◆AZ::Blog はんなりと、あずき色☆: AMAZ君(改)
◆AZ::Blog はんなりと、あずき色☆: 簡単タグでamazonアフィリエイト・第2回
以下は、応用テスト。
解説(自分用)
1.プラグインの説明
/*
Plugin Name: AMAZkunEX
Plugin URI: http://www.overcube.com/wordpress/
Description: うちのブログにアマゾンリンクをつけるプラグイン。
Author: overQ
Version: 1.0
Author URI: http://www.overcube.com/wordpress/
*/
ここを読み取って、WPのプラグイン画面に表示される。
本格的にはこのあとに「ライセンス情報」を記入。
□プラグインの作成 - WordPress Codex 日本語版
2.フック(プラグインの取り込み)
add_filter('the_content', 'amazkunex',10000);
WPで、プラグインが機能するタイミングというようなもの。
ここでは、「the_content」…つまり本文が表示されるとき、「amazkunex」関数が適用される。「10000」は他のプラグインと比べて、10000番目(つまり最後)に適用されるということ。
□プラグイン API - WordPress Codex 日本語版
3.amazkunex関数の機能
function amazkunex ($content) {
ここから、関数amazkunexの始まり。
$amaz_pattern = "<amazkunBook>(.*)</amazkunBook>";
if (preg_match_all ( "/".$amaz_pattern."/", $content, $matches )) {
「$content」(記事本文)から、「amazkunBook」タグで囲まれた部分を、正規表現で抽出。
「preg_match_all」は、「タグつき中身」と「タグなし中身」を多元配列で取り出し、「$matches」に格納。
foreach( $matches[1] as $amaz_val ) {
タグ抜き中身の配列($matches[1])を使って、以下の作業を繰り返す。
$amaz_nakami = file_get_contents("http://ecs.amazonaws.jp/onca/xml?Service=AWSECommerceService&SubscriptionId=ここにサブスクリプションIDが入る&Operation=ItemLookup&IdType=ASIN&ItemId=$amaz_val&ResponseGroup=Large&Version=2005-10-05&AssociateTag=ここにアソシエイトIDが入る&Style=ここに整形用のXMLのURIが入る");
$okikae = ‘<div class="amazkun">’.$amaz_nakami.’</div>’;
$content = str_replace(’<amazkunBook>’.$amaz_val.’</amazkunBook>’,$okikae,$content);
}
「amazkunBook」タグで囲われた部分を、長ったらしいアマゾンの表示と置き換え。「str_replace」で素直に文字列を置換。
echo $content;
}
でもって、置き換えた「本文」をお返しする。
…できてしまえば、異様に簡単だな( ;∀;)


![ダークナイト 特別版 [DVD]](http://ecx.images-amazon.com/images/I/51Ee-EBYKHL._SL160_.jpg)


