キーワードによる商品検索で、楽天市場の「アフィリエイト商品の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の機能
楽天市場商品検索API楽天市場に出品されている商品情報を、キーワードや商品コード、ジャンルIDやショップコードなどで検索できる。
楽天市場ジャンル検索API楽天市場のジャンル名とジャンル構造を、ジャンルIDで取得できる。
楽天市場タグ検索API楽天市場のタグ名とタグ構造を、タグIDで取得できる。
タグIDは、楽天市場商品検索APIや楽天市場ジャンル検索APIで取得できる。
楽天市場ランキングAPI楽天市場のランキング情報を、ジャンルや性別や年代別に取得できる。
上位1000位までのランキング情報と3つの商品画像を、取得できる。
商品価格ナビ製品検索APIキーワードやジャンルによって、商品価格ナビ内の製品を検索できる。
製品基本情報やメーカー情報などを、取得できる。
楽天市場系APIの詳細なサービス別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;
	}
}

【まとめ記事】へのリンク

【まとめ記事】楽天市場の商品を表示する場合、「アフィリエイト商品表示・WordPressプラグイン」のPHPソースコード解説

「アフィリエイト商品表示・WordPressプラグイン」を用いて、楽天市場の商品を表示する処理について、PHPソースコードを解説しています。