【まとめ記事】楽天市場の商品を表示する場合、「アフィリエイト商品表示・WordPressプラグイン」のPHPソースコード解説
楽天市場の商品を表示するWordPressプラグインを、作ってみたいです。
「アフィリエイト商品表示・WordPressプラグイン」は、
キーワードで検索した商品を、
アフィリエイト対象の商品として表示するプラグインです。
当プラグインを用いて、楽天市場の商品を表示する処理について、PHPソースコードを解説しています。
当プラグインを用いて楽天市場の商品を表示する場合、大まかな処理は以下の通りになります。
- 楽天市場の商品を表示したい場所に、当プラグインのショートコードを記述します。
- その際、当プラグインのショートコードのservice属性に、rakutenを指定します。
キーワード文字列など、他のショートコードの属性を適切に指定します。 - 楽天市場商品検索APIを使って、「楽天市場商品の検索結果」を取得します。
- 「楽天市場商品の検索結果」から、「当プラグイン用の商品情報の配列」を作成します。
- 「当プラグイン用の商品情報の配列」から、楽天市場の「アフィリエイト商品のHTML」を作成します。
- 当プラグインのショートコードを記述してある場所に、楽天市場の「アフィリエイト商品のHTML」を表示します。
以上の処理より、楽天市場の商品を、アフィリエイト対象の商品として表示します。
以上の処理について、PHPソースコードを解説しています。
ソースコードの解説を読んだら、アフィリエイト商品を表示するWordPressプラグインの作り方を、少しずつ理解できます。
- 「アフィリエイト商品表示・WordPressプラグイン」のソースコード
- 楽天市場の商品を表示する場合、「アフィリエイト商品表示・WordPressプラグイン」の使い方
- 「アフィリエイト商品表示・WordPressプラグイン」のショートコードの処理について、PHPソースコードの解説
- 楽天市場商品検索APIを使って、キーワードで商品検索して、「楽天市場商品の検索結果」を取得する処理について、PHPソースコードの解説
- 「楽天市場商品の検索結果」から、「当プラグイン用の商品情報の配列」を作成する処理について、PHPソースコードの解説
- 「当プラグイン用の商品情報の配列」から、「アフィリエイト商品のHTML」を作成する処理について、PHPソースコードの解説
「アフィリエイト商品表示・WordPressプラグイン」のソースコード
github.comサイト内で公開しています。
フリーソフトのように、自由にお使いください。
https://github.com/goods-memo/goods-memo-affiliate
楽天市場の商品を表示する場合、「アフィリエイト商品表示・WordPressプラグイン」の使い方
PHPソースコードの解説をする前に、
楽天市場の商品を表示する場合の「アフィリエイト商品表示・WordPressプラグイン」の使い方を、説明します。
当プラグインの使い方を知っている方が、当プラグインのソースコードを理解しやすい、と思います。
楽天市場の商品を表示する場合の「当プラグインのショートコード」を、記述する
楽天市場の商品を表示したい場所に、当プラグインのショートコードを記述します。
楽天市場の商品を表示する場合、
ショートコードのservice属性に、rakutenを指定します。
当プラグインのショートコードの例。
[goodsmemo_affiliate service="rakuten" keyword="SDカード" number="1"]
- service属性:rakuten
- keyword属性:SDカード
- number属性:1(商品の表示件数)
当プラグインの「楽天の設定」で、各項目を設定する
当プラグイン「管理画面」の「アフィリエイトの設定」、
「楽天の設定」において、各項目を入力して、「変更を保存」ボタンを選択します。
楽天に関する設定項目には、例えば、
楽天市場商品検索APIに関する項目があります。
「アフィリエイト商品表示・WordPressプラグイン」の使い方、
その詳細については、以下の記事を参照してください。
「アフィリエイト商品表示・WordPressプラグイン」のショートコードの処理について、PHPソースコードの解説
当プラグインのショートコードの登録
add_shortcode()関数を用いて、当プラグインのショートコードを登録します。
登録後、以下のような「楽天市場の商品を表示するショートコード」を、利用できるようになります。
[goodsmemo_affiliate service="rakuten" keyword="SDカード" number="1"]
- service属性:rakuten
- keyword属性:SDカード
- number属性:1(商品の表示件数)
当プラグインのショートコードの処理については、以下の記事を参照してください。
【まとめ記事】アマゾンの商品を表示する場合、
「アフィリエイト商品表示・WordPressプラグイン」のPHPソースコード解説
ショートコードのservice属性がrakutenなら、楽天市場の「アフィリエイト商品のHTML」を作成する関数を呼び出す
$affiliateHTML;
switch ($service) {
case "amazon" :
$affiliateHTML = AmazonAffiliate::makeHTML ( $shortcodeAttribute );
break;
case "rakuten" :
$affiliateHTML = RakutenAffiliate::makeHTML ( $shortcodeAttribute );
break;
default :
throw new IllegalArgumentException ( "無効なサービス名:" . $service );
}
当プラグインのショートコードのservice属性がrakutenであるか、判断します。
service属性がrakutenなら、楽天市場の「アフィリエイト商品のHTML」を作成する関数を呼び出します。
switch文を用いて、service属性の判断をしています。
$service変数の値がrakutenの場合、
楽天市場の「アフィリエイト商品のHTML」を作成するRakutenAffiliate::makeHTML()関数を呼び出します。
ショートコードの属性に関連する処理、
その詳細については、以下の記事を参照してください。
ショートコードの各属性をまとめたShortcodeAttributeクラス
当プラグインのShortcodeAttributeクラスについては、以下の記事を参照してください。
【まとめ記事】アマゾンの商品を表示する場合、
「アフィリエイト商品表示・WordPressプラグイン」のPHPソースコード解説
ショートコードの属性に関する処理を集めたユーティリティクラス
当プラグインの「ショートコードの属性のユーティリティクラス」については、以下の記事を参照してください。
【まとめ記事】アマゾンの商品を表示する場合、
「アフィリエイト商品表示・WordPressプラグイン」のPHPソースコード解説
楽天市場商品検索APIを使って、キーワードで商品検索して、「楽天市場商品の検索結果」を取得する処理について、PHPソースコードの解説
IchibaItemSearchオペレーションに対応する関数を呼び出して、楽天市場の「アフィリエイト商品のHTML」を作成する
public static function makeHTML(ShortcodeAttribute $shortcodeAttribute)
{
中略
$affiliateHTML;
$operation = $searchOption->getOperation();
switch ($operation) {
case SearchParagraphUtils::ICHIBA_ITEM_SEARCH_OPERATION:
// 現時点では、Operation="IchibaItemSearch"で、楽天市場商品をキーワード検索する処理だけ行う。
$affiliateHTML = KeywordSearchOperation::makeHTMLOfIchibaItemSearch($urlInfo, $commonParameter, $restParameter, $searchOption, $itemHTMLOption);
break;
default:
throw new IllegalArgumentException("無効なオペレーション:" . $operation);
}
return $affiliateHTML;
}
ICHIBA_ITEM_SEARCH_OPERATION定数。
/*
IchibaItem:楽天市場系APIの一つ
Search:楽天市場商品検索API
*/
const ICHIBA_ITEM_SEARCH_OPERATION = "IchibaItemSearch"; //TODO Choice部品
switch文を用いて、楽天市場商品検索APIに対応するオペレーションを判断します。
現在のところ、有効なオペレーションはIchibaItemSearchだけです。
よって上記のswitch文では、$operation変数がIchibaItemSearchであるか、判断しています。
オペレーションがIchibaItemSearchの場合、
キーワードによる商品検索を行い、楽天市場の「アフィリエイト商品のHTML」を作成する関数を呼び出します。
IchibaItemSearchオペレーションに対応する、楽天市場の「アフィリエイト商品のHTML」を作成する関数は、
KeywordSearchOperation::makeHTMLOfIchibaItemSearch()関数です。
当プラグインで楽天市場の商品を表示させたい場合、
楽天市場商品検索APIを使うだけで充分です。
このAPIを使うだけで、楽天市場の商品について商品情報を取得できます。
実は、楽天市場系APIには、オペレーションという項目はありません。
プログラムコード上、オペレーションという項目を使っていますが、楽天市場商品検索APIを用いた処理を呼び出していることになります。
楽天市場商品検索APIを用いて、楽天市場の「アフィリエイト商品のHTML」を作成する処理、
その詳細については、以下の記事を参照してください。
楽天市場の商品に対して商品検索を行う関数を呼び出して、楽天市場の「アフィリエイト商品のHTML」を作成する
public static function makeHTMLOfIchibaItemSearch(
URLInfo $urlInfo,
CommonRESTParameter $commonParameter,
RESTParameter $restParameter,
SearchOption $searchOption,
ItemHTMLOption $itemHTMLOption
) {
$itemsHTMLInfoMaker = new RakutenItemsHTMLInfoMaker($commonParameter, $restParameter, $searchOption);
$itemsHtml = ItemSearchOperation::makeItemsHTML($urlInfo, $itemHTMLOption, $itemsHTMLInfoMaker);
return $itemsHtml;
}
makeHTMLOfIchibaItemSearch()関数は、楽天市場の商品に対して、キーワードで商品検索を行います。
その検索結果で得た商品情報を元に、楽天市場の「アフィリエイト商品のHTML」を作成します。
商品検索では、楽天市場商品検索APIだけを使用して検索しています。
よって、楽天市場というカテゴリに対して、商品検索を行なっています。
楽天市場の商品において、キーワードによる商品検索をすることで、楽天市場の「アフィリエイト商品のHTML」を作成する処理、
その詳細については、以下の記事を参照してください。
「楽天市場商品のHTMLに関する情報」を作成する
「楽天市場商品のHTMLに関する情報」とは、
楽天市場の「アフィリエイト商品のHTML」を作成する処理において、必要な情報のことです。
「楽天市場商品のHTMLに関する情報」は、以下の三つです。
- キーワードによる商品検索で取得した、「楽天市場商品の検索結果」。
- 「楽天市場商品の検索結果」を基に作成した、「当プラグイン用の商品情報の配列」。
- 楽天市場における、キーワードによる商品検索の検索条件に対応する、「一意な文字列」。
上記の三つの情報については、RakutenItemsHTMLInfoMakerクラスが、これら三つの情報を作成します。
「楽天市場商品のHTMLに関する情報」を作成する処理、
その詳細については、以下の記事を参照してください。
楽天市場商品検索APIを使って、キーワードで商品検索して、「楽天市場商品の検索結果」を取得する
$hostname = $urlInfo->getHostname();
$path = $urlInfo->getPath();
$requestURL = 'https://' . $hostname . '/' . $path . '?' . $queryString;
$response = HTTPRequest::getContents($requestURL);
return $response;
$requestURL変数の例。
https://app.rakuten.co.jp/services/api/IchibaItem/Search/20220601?affiliateId=SAMPLEfa.fb4d5d26.0447a2fb.9c0bXXXX&applicationId=SAMPLE0f0b9181744bc4d36ad049XXXX&imageFlag=1&keyword=%E3%83%80%E3%82%A4%E3%82%A8%E3%83%83%E3%83%88
楽天市場商品検索APIのURLを作成して、
HTTPRequest::getContents()関数によって、楽天市場商品検索APIを呼び出します。
そして、「楽天市場商品の検索結果」を取得します。
楽天市場商品検索APIから取得した「楽天市場商品の検索結果」を、$response変数に代入します。
その$response変数を、return文で返します。
楽天市場商品検索APIの「ホスト名」と「リクエストURLのパス」
楽天市場商品検索APIのURLを作成する場合、以下の項目を用意します。
- 楽天市場商品検索API ホスト名
- 楽天市場商品検索API リクエストURLのパス
$hostname変数は、楽天市場商品検索APIの「ホスト名」を保持します。
$path変数は、楽天市場商品検索APIの「リクエストURLのパス」を保持します。
$hostname変数と$path変数の例。
$hostname:"app.rakuten.co.jp"
$path:"services/api/IchibaItem/Search/20220601"
楽天市場商品検索APIの入力パラメーターを含むクエリ文字列
楽天市場商品検索APIを使って、「楽天市場商品の検索結果」を取得する場合、
「楽天市場商品検索APIの入力パラメーターを含むクエリ文字列」を、用意します。
$queryString変数の例。
affiliateId=SAMPLEfa.fb4d5d26.0447a2fb.9c0bXXXX&applicationId=SAMPLE0f0b9181744bc4d36ad049XXXX&imageFlag=1&keyword=%E3%83%80%E3%82%A4%E3%82%A8%E3%83%83%E3%83%88
「楽天市場商品検索APIの入力パラメーターを含むクエリ文字列」は、
以下の「楽天市場商品検索APIの入力パラメーター」を、含みます。
- applicationId:楽天アプリID
- affiliateId:楽天アフィリエイトID
- imageFlag:商品画像有無フラグ
- keyword:検索キーワード
キーワードで商品検索する「楽天市場商品検索APIのURL」
- 楽天市場商品検索API ホスト名
- 楽天市場商品検索API リクエストURLのパス
- 楽天市場商品検索APIの入力パラメーターを含むクエリ文字列
以上の項目を使用して、キーワードで商品検索する「楽天市場商品検索APIのURL」を作成します。
$requestURL変数は、「楽天市場商品検索APIのURL」を保持します。
$requestURL変数の例。
https://app.rakuten.co.jp/services/api/IchibaItem/Search/20220601?affiliateId=SAMPLEfa.fb4d5d26.0447a2fb.9c0bXXXX&applicationId=SAMPLE0f0b9181744bc4d36ad049XXXX&imageFlag=1&keyword=%E3%83%80%E3%82%A4%E3%82%A8%E3%83%83%E3%83%88
上記の「楽天市場商品検索APIのURL」を呼び出すことで、JSON形式の「楽天市場商品の検索結果」を取得できます。
JSON形式の「楽天市場商品の検索結果」を保持する$response変数
$hostname = $urlInfo->getHostname();
$path = $urlInfo->getPath();
$requestURL = 'https://' . $hostname . '/' . $path . '?' . $queryString;
$response = HTTPRequest::getContents($requestURL);
return $response;
$response変数は、JSON形式の「楽天市場商品の検索結果」を保持します。
$response変数の例。
{
"GenreInformation":[],
"Items":
[
{
"Item":
{
"affiliateRate":4,
"affiliateUrl":"https://hb.afl.rakuten.co.jp/hgc/SAMPLE11.6r01m6a5.SAMPLE11.6r01nc2f/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2FSAMPLEms%2F100000333-1%2F&m=http%3A%2F%2Fm.rakuten.co.jp%2FSAMPLEms%2Fi%2F10006846%2F",
"asurakuArea":"",
"asurakuClosingTime":"",
"asurakuFlag":0,
"availability":1,
"catchcopy":"ショップオブザイヤー受賞店舗 総合賞4位 ダイエット・健康ジャンル大賞",
"creditCardFlag":1,
"endTime":"",
"genreId":"567634",
"giftFlag":0,
"imageFlag":1,
"itemCaption":"内容量 1粒重量300mg ×60粒 約1ヶ月分 お召し上がり方 1日2粒を目安にお飲みください。保存方法 高温多湿や直射日光を避け、常温保存してください。 賞味期限 約2年間※偏った食事を取る方や! ▼炭水化物、甘い物が好きな方へ▼ ▼▼オススメ商品▼▼",
"itemCode":"SAMPLEms:10006846",
"itemName":"17日終了!クーポンで198円★サラシア ダイエットサプリ 約1ヶ月分",
"itemPrice":960,
"itemPriceBaseField":"item_price_min3",
"itemPriceMax1":960,
"itemPriceMax2":960,
"itemPriceMax3":960,
"itemPriceMin1":960,
"itemPriceMin2":960,
"itemPriceMin3":960,
"itemUrl":"https://hb.afl.rakuten.co.jp/hgc/SAMPLE11.6r01m6a5.SAMPLE11.6r01nc2f/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2FSAMPLEms%2F100000333-1%2F&m=http%3A%2F%2Fm.rakuten.co.jp%2FSAMPLEms%2Fi%2F10006846%2F",
"mediumImageUrls":
[
{"imageUrl":"https://thumbnail.image.rakuten.co.jp/@0_mall/SAMPLEms/cabinet/images/thum/cpn/sara1_c79.jpg?_ex=128x128"},
{"imageUrl":"https://thumbnail.image.rakuten.co.jp/@0_mall/SAMPLEms/cabinet/images/kikaku/etc/imgrc0071386725.jpg?_ex=128x128"},
{"imageUrl":"https://thumbnail.image.rakuten.co.jp/@0_mall/SAMPLEms/cabinet/imgrc0073616742.jpg?_ex=128x128"}
],
"pointRate":3,
"pointRateEndTime":"2023-07-16 23:59",
"pointRateStartTime":"2023-07-14 13:00",
"postageFlag":0,
"reviewAverage":4.39,
"reviewCount":8963,
"shipOverseasArea":"ワールドワイド",
"shipOverseasFlag":1,
"shopAffiliateUrl":"https://hb.afl.rakuten.co.jp/hgc/SAMPLE11.6r01m6a5.SAMPLE11.6r01nc2f/?pc=https%3A%2F%2Fwww.rakuten.co.jp%2FSAMPLEms%2F&m=http%3A%2F%2Fm.rakuten.co.jp%2FSAMPLEms%2F",
"shopCode":"SAMPLEms",
"shopName":"サプリ専門SHOP サンプル商店",
"shopOfTheYearFlag":1,
"shopUrl":"https://hb.afl.rakuten.co.jp/hgc/SAMPLE11.6r01m6a5.SAMPLE11.6r01nc2f/?pc=https%3A%2F%2Fwww.rakuten.co.jp%2FSAMPLEms%2F&m=http%3A%2F%2Fm.rakuten.co.jp%2FSAMPLEms%2F",
"smallImageUrls":
[
{"imageUrl":"https://thumbnail.image.rakuten.co.jp/@0_mall/SAMPLEms/cabinet/images/thum/cpn/sara1_c79.jpg?_ex=64x64"},
{"imageUrl":"https://thumbnail.image.rakuten.co.jp/@0_mall/SAMPLEms/cabinet/images/kikaku/etc/imgrc0071386725.jpg?_ex=64x64"},
{"imageUrl":"https://thumbnail.image.rakuten.co.jp/@0_mall/SAMPLEms/cabinet/imgrc0073616742.jpg?_ex=64x64"}
],
"startTime":"",
"tagIds":[1004143,1019268],"taxFlag":0
}
},
{
"Item":
{
中略
}
},
中略
],
"TagInformation":[],
"carrier":0,
"count":249409,
"first":1,
"hits":30,
"last":30,
"page":1,
"pageCount":100
}
楽天市場商品検索APIを使って、キーワードで商品検索して、「楽天市場商品の検索結果」を取得する処理、
その詳細については、以下の記事を参照してください。
「楽天市場商品の検索結果」から、「当プラグイン用の商品情報の配列」を作成する処理について、PHPソースコードの解説
「当プラグイン用の商品情報の配列」から、「アフィリエイト商品のHTML」を作成する処理について、PHPソースコードの解説
「当プラグイン用の商品情報」の「商品レビュー」から、「最適な商品レビューの文字列」を作成する
当プラグインの「最適な商品レビューの文字列」を作成する処理については、以下の記事を参照してください。
【まとめ記事】アマゾンの商品を表示する場合、
「アフィリエイト商品表示・WordPressプラグイン」のPHPソースコード解説
「アフィリエイト商品のHTML」の「フッターのHTMLに関する情報」を作成する
当プラグインの「フッターのHTMLに関する情報」を作成する処理については、以下の記事を参照してください。
【まとめ記事】アマゾンの商品を表示する場合、
「アフィリエイト商品表示・WordPressプラグイン」のPHPソースコード解説