らくてんの アフィリエイト を記事の下に取り付けるプラグインを作りました。Composerを使用して楽天のSDKを取ってきているので、そちらをプラグインの中にインストールする必要と アフィリエイト のAPIIDなども必要になりますのでそちらも御自身で構える必要がありますが、それ程難しいことはないプログラムコードだと思います。
あとCSSなどもご自身が使用するサイトのデザインに合わしてご使用ください。今回、WordPressのプラグインですがソースコードを見たいだければ分かる通り、AmzのSDKも取り入れようかなとか思ったのですが、処理が重たくなり表示速度が下がりそうだったので辞めました。因みにAmzのSDKはComposerに公開していないようです。公式サイトからzipでダウンロードするか、githubから入手する方法しかないようですね。
仕様として、タグのワードから商品を検索し表示する方法とショートカットを使用して商品を表示させる方法があります。例えばRakuten_Seller_param type=”search” word=”ひろゆきのシン・未来予測”このようにショートコード書くと下記のように表示されます。また記事の最後に自動で紹介商品も表示されます。
追記:リクエストが多くなるとバグるみたいな‥‥。いまいち下記が表示されていない原因がわからない。
追記:記事の最後に自動で紹介する機能は、このサイトでは一旦停止しています。
[Rakuten_Seller_param type=”search” word=”ひろゆきのシン・未来予測”]
トイウコトデ、WordPressのソースコードになります。
<?php
/*
Plugin Name: Rakuten_Seller
Plugin URI: https://zip358.com/
Description: 楽天アフィリエイトを表示
Author: @zip358com
Version: 0.1
Author URI: https://zip358.com/
*/
require_once plugin_dir_path( __FILE__ ).'/vendor/autoload.php';
define("RAKUTEN_YOUR_APPLICATION_ID","xxxxxxxxxxxxxxx");
define("RAKUTEN_YOUR_AFFILIATE_ID","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
define("AMAZON_YOUR_ACCESS_KEY_ID","");
define("AMAZON_YOUR_SECRET_KEY","");
define("AMAZON_YOUR_ENDPOINT","");
define("AMAZON_YOUR_URL","");
function Rakuten_Seller_content_plus($content) {
if(is_single()) {
$content.='[Rakuten_Seller_param type="auto"]';
}
return $content;
}
function Rakuten_Seller($params = array()){
$htmlcode = "";
extract(shortcode_atts(array(
'type'=>'',
'word'=>''
), $params));
$client = new RakutenRws_Client();
// アプリID (デベロッパーID) をセットします
$client->setApplicationId(RAKUTEN_YOUR_APPLICATION_ID);
// アフィリエイトID をセットします(任意)
$client->setAffiliateId(RAKUTEN_YOUR_AFFILIATE_ID);
if($type==="auto"){
$tags = get_the_tags();
$htmlcode.= "<div class='rakuten_seller_div'>";
foreach( $tags as $tag) {
$htmlcode.= Rakuten_code($client,$tag->name);
}
$htmlcode.= "</div>";
}elseif($type==="search"){
$htmlcode.= "<div class='rakuten_seller_div'>";
$htmlcode.= Rakuten_code($client,$word);
$htmlcode.= "</div>";
}
return $htmlcode;
}
function Rakuten_code($client,$word="JavaScript"){
$htmlcode = "";
// IchibaItem/Search API から、keyword=$word を検索します
$response = $client->execute('IchibaItemSearch', array(
'keyword' => $word,
'genreInformationFlag' => 1
));
// レスポンスが正しいかを isOk() で確認することができます
$cnt = 0;
if ($response->isOk()) {
foreach ($response as $item) {
$htmlcode.= "<div class='rakuten_seller_item'>".
"<img src='".$item["mediumImageUrls"][0]["imageUrl"]."'>".
"<p>".$item["itemName"]."</p>".
"<a class='rakuten_btn' href='".$item["affiliateUrl"] . "' title='".$item["itemName"]."'><span>楽天で購入"."</span></a></div>";
$htmlcode.= amazon_code($item["isbn"],$item["jan"]);
if($cnt>0){
break;
}
$cnt++;
}
} else {
//echo 'Error:'.$response->getMessage();
}
return $htmlcode;
}
function amazon_code($isbn="",$jan=""){
$htmlcode = "";
return $htmlcode;
}
add_shortcode('Rakuten_Seller_param', 'Rakuten_Seller');
add_filter('the_content', 'Rakuten_Seller_content_plus');