AZ::Blog

AZ::blog Home >> AMAZ君EXプラグイン
18
Nov
2008

AMAZ君EXプラグイン

合衆国再生―大いなる希望を抱いて
バラク・オバマ
¥ 1,995 / ダイヤモンド社
( 2007-12-14 )
通常24時間以内に発送

上のような、アマゾンの本とか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回

以下は、応用テスト。

ダークナイト 特別版 [DVD]
監督:クリストファー・ノーラン
出演:クリスチャン・ベール
¥ 3,980 / ワーナー・ホーム・ビデオ
( 2008-12-10 )
通常24時間以内に発送

フーズ・ネクスト+7
ザ・フー
¥ 1,680 / ユニバーサル インターナショナル
( 2006-10-25 )
通常24時間以内に発送

マンナンヒカリ 2Kg
監督:
出演:
¥ 3,150 / 大塚食品
( )

解説(自分用)

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;
}

でもって、置き換えた「本文」をお返しする。
…できてしまえば、異様に簡単だな( ;∀;)

関連する記事

コメントする