キーワードによる商品検索で、楽天市場の「アフィリエイト商品のHTML」を作成する
楽天市場商品検索APIにおいて、
キーワードで商品検索して商品情報を取得し、楽天市場の「アフィリエイト商品のHTML」を作成する。
switch文のオペレーションの場合分けで、上記の処理を行う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部品
商品検索を行うオペレーションを用いて、「アフィリエイト商品のHTML」を作成する
楽天市場商品検索APIの商品検索を用いて、楽天市場の「アフィリエイト商品のHTML」を作成します。
上記のソースコードではswitch文を使って、オペレーションについて場合分けしています。
ですが実際のところ、場合分けは一通りだけです。
楽天市場商品検索APIを用いて、キーワードによる検索条件を満たす商品を取得する。
この処理だけを行なっています。
例えば、キーワードが「ダイエットサプリ」の場合、
ダイエットサプリという条件を満たす、楽天市場で販売されている商品の情報を取得します。
その取得した商品情報を元に、ダイエットサプリの商品について、「アフィリエイト商品のHTML」を作成します。
上記のソースコードで言えば、
KeywordSearchOperation::makeHTMLOfIchibaItemSearch()関数の処理で、楽天市場の「アフィリエイト商品のHTML」を、作成しています。
作成された、楽天市場の「アフィリエイト商品のHTML」は、$affiliateHTML変数に代入されます。
その$affiliateHTML変数は、return文によって返されます。
楽天市場の商品を表示するなら、商品検索を行う楽天市場商品検索APIを使えば充分です
楽天市場の商品を表示するワードプレスプラグインを作る場合、
商品検索を行う楽天市場商品検索APIを使えば、充分です。
楽天市場商品検索APIは、指定された検索キーワードを使って、商品の検索結果を取得します。
とりあえず、このAPIさえ利用できれば、その他の楽天市場系APIについては使わなくて良い、と言えます。
楽天市場系APIでは、IchibaItemSearchオペレーションは存在しない
ICHIBA_ITEM_SEARCH_OPERATION定数。
/*
IchibaItem:楽天市場系APIの一つ
Search:楽天市場商品検索API
*/
const ICHIBA_ITEM_SEARCH_OPERATION = "IchibaItemSearch"; //TODO Choice部品
当プラグインのプログラムコードでは、楽天市場に対して商品検索を行うオペレーションのことを、IchibaItemSearchオペレーションと言っています。
ですが楽天市場系APIでは、IchibaItemSearchオペレーションという項目は存在しません。
実はここで言っているオペレーションとは、「Amazon Product Advertising APIのオペレーション」を参考にしています。
当プラグインでは楽天市場とアマゾン、両方のアフィリエイト商品表示に対応しています。
よって当プラグインでは、アマゾンに対しても商品検索を行い、アマゾンの「アフィリエイト商品のHTML」を作成しています。
※関連記事:キーワードによる商品検索で、アマゾンの「アフィリエイト商品のHTML」を作成する。
アマゾンに関する処理を行うソースコードを参考にして、楽天市場の「アフィリエイト商品のHTML」を作成するソースコードを、作成しました。
実際のところ、IchibaItemSearchオペレーションとは、楽天市場商品検索APIを呼び出す操作を意味しています。
なお、IchibaItemSearchという文字列は、以下のIchibaItemとSearchから作った文字列です。
- IchibaItemは、楽天市場系APIの一つを示す。
- Searchは、楽天市場商品検索APIを示す。
これらの英単語は、楽天市場商品検索APIのURLに含まれている英単語を、参考にしました。
楽天市場商品検索APIの例。
https://app.rakuten.co.jp/services/api/IchibaItem/Search/20220601?[parameter]=[value]…
/IchibaItem/Search/の部分を参考にして、IchibaItemSearchというオペレーション名称を作成しました。
楽天ウェブサービスには、たくさんのAPIがあります
当プラグインでは、楽天市場商品検索APIだけを利用していますが、楽天ウェブサービスで利用できるAPIはたくさんあります。
サービス別のAPIには、例えば以下のものがあります。
- 楽天市場系API
- 楽天ブックス系API
- 楽天トラベル系API
各サービス系APIには、詳細なサービス別APIがあります。
例えば、以下のものがあります。
詳細なサービス別API | 詳細なサービス別APIの機能 |
---|---|
楽天市場商品検索API | 楽天市場で販売されている商品情報を、キーワードやジャンルID、ショップコードなどで検索できる。 |
楽天ブックス総合検索API | 楽天ブックスで販売されている書籍やCD、DVDなどの商品情報を、キーワードやジャンルなどで検索できる。 |
楽天トラベルキーワード検索API | 楽天トラベルで予約できる宿泊施設や観光地などの情報を、キーワードや地区コードで検索できる。 |
楽天市場系APIの詳細なサービス別APIについては、以下のものがあります。
楽天市場系APIの詳細なサービス別API | 楽天市場系APIの詳細なサービス別APIの機能 |
---|---|
楽天市場商品検索API | 楽天市場に出品されている商品情報を、キーワードや商品コード、ジャンルIDやショップコードなどで検索できる。 |
楽天市場ジャンル検索API | 楽天市場のジャンル名とジャンル構造を、ジャンルIDで取得できる。 |
楽天市場タグ検索API | 楽天市場のタグ名とタグ構造を、タグIDで取得できる。 タグIDは、楽天市場商品検索APIや楽天市場ジャンル検索APIで取得できる。 |
楽天市場ランキングAPI | 楽天市場のランキング情報を、ジャンルや性別や年代別に取得できる。 上位1000位までのランキング情報と3つの商品画像を、取得できる。 |
商品価格ナビ製品検索API | キーワードやジャンルによって、商品価格ナビ内の製品を検索できる。 製品基本情報やメーカー情報などを、取得できる。 |
ちなみに、詳細なサービス別APIは、全部で31個ありました(2023年6月当時)。
当プラグインで、全部の「詳細なサービス別API」を利用できたら、たくさんの商品やサービスを取り扱えて、便利です。
ですが、そのようなプラグインを作るのは、とても困難です。
楽天市場の「アフィリエイト商品のHTML」を作成するのに必要とされる各情報を作成する
public static function makeHTML(ShortcodeAttribute $shortcodeAttribute)
{
$optionMap = AffiliateOptionUtils::getAffiliateOption(); // ここで一回だけデータベースを読み込む。
$urlInfo = URLUtils::makeURLInfo($optionMap, URLParagraphUtils::HOSTNAME_ID, URLParagraphUtils::PATH_ID);
$commonParameter = RakutenOptionUtils::makeCommonRESTParameter($optionMap);
$restParameter = RakutenOptionUtils::makeRESTParameter($optionMap, $shortcodeAttribute->getKeyword());
$searchOption = RakutenOptionUtils::makeSearchOption($optionMap, $shortcodeAttribute->getOperation());
$itemHTMLOption = RakutenItemHTMLOptionUtils::makeItemHTMLOption($optionMap, $shortcodeAttribute);
中略
$affiliateHTML = KeywordSearchOperation::makeHTMLOfIchibaItemSearch($urlInfo, $commonParameter, $restParameter, $searchOption, $itemHTMLOption);
キーワードによる商品検索で、
楽天市場の「アフィリエイト商品のHTML」を作成する関数において、必要とされる各情報を作成します。
楽天市場の「アフィリエイト商品のHTML」を作成する関数とは、
KeywordSearchOperation::makeHTMLOfIchibaItemSearch()関数です。
必要とされる各情報には、
- 当プラグインの「アフィリエイトの設定」
- 楽天の設定
ここで入力された情報などがあります。
※関連記事:アフィリエイト商品表示・WordPressプラグイン、アフィリエイトの設定、楽天の設定。
例えば、以下のような情報があります。
- 楽天市場商品検索API ホスト名
- 楽天市場商品検索API リクエストURLのパス
- 楽天アプリID/デベロッパーID
- 楽天アフィリエイトID
- 商品名の表示文字数
- 商品情報のキャッシュ時間(秒)
これらの情報は、$optionMap変数に保持されています。
$optionMap変数は、ワードプレスのoptionsデータベーステーブルから取得した、当プラグイン専用の設定値です。
RakutenAffiliate.phpのソースコード
<?php
namespace goodsmemo\rakuten;
use goodsmemo\rakuten\KeywordSearchOperation;
use goodsmemo\rakuten\RakutenOptionUtils;
use goodsmemo\rakuten\RakutenItemHTMLOptionUtils;
use goodsmemo\network\URLUtils;
use goodsmemo\option\AffiliateOptionUtils;
use goodsmemo\option\rakuten\URLParagraphUtils;
use goodsmemo\option\rakuten\SearchParagraphUtils;
use goodsmemo\shortcode\ShortcodeAttribute;
use goodsmemo\exception\IllegalArgumentException;
require_once GOODS_MEMO_DIR . "rakuten/KeywordSearchOperation.php";
require_once GOODS_MEMO_DIR . "rakuten/RakutenOptionUtils.php";
require_once GOODS_MEMO_DIR . "rakuten/RakutenItemHTMLOptionUtils.php";
require_once GOODS_MEMO_DIR . "network/URLUtils.php";
require_once GOODS_MEMO_DIR . "option/AffiliateOptionUtils.php";
require_once GOODS_MEMO_DIR . "option/rakuten/URLParagraphUtils.php";
require_once GOODS_MEMO_DIR . "option/rakuten/SearchParagraphUtils.php";
require_once GOODS_MEMO_DIR . "shortcode/ShortcodeAttribute.php";
require_once GOODS_MEMO_DIR . "exception/IllegalArgumentException.php";
class RakutenAffiliate
{
public static function makeHTML(ShortcodeAttribute $shortcodeAttribute)
{
$optionMap = AffiliateOptionUtils::getAffiliateOption(); // ここで一回だけデータベースを読み込む。
$urlInfo = URLUtils::makeURLInfo($optionMap, URLParagraphUtils::HOSTNAME_ID, URLParagraphUtils::PATH_ID);
$commonParameter = RakutenOptionUtils::makeCommonRESTParameter($optionMap);
$restParameter = RakutenOptionUtils::makeRESTParameter($optionMap, $shortcodeAttribute->getKeyword());
$searchOption = RakutenOptionUtils::makeSearchOption($optionMap, $shortcodeAttribute->getOperation());
$itemHTMLOption = RakutenItemHTMLOptionUtils::makeItemHTMLOption($optionMap, $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;
}
}