「楽天市場商品の検索結果」など、「楽天市場商品のHTMLに関する情報」を作成する
「楽天市場商品のHTMLに関する情報」を作成する処理について、PHPソースコードを解説しています。
ここで作成される「楽天市場商品のHTMLに関する情報」とは、以下の三つです。
- 楽天市場商品の検索結果。
- 当プラグイン用の商品情報の配列。
- 楽天市場における、キーワードによる商品検索の検索条件に対応する、一意な文字列。
「楽天市場商品の検索結果」など、「楽天市場商品のHTMLに関する情報」を作成する
class RakutenItemsHTMLInfoMaker implements ItemsHTMLInfoMaker
{
以下省略
RakutenItemsHTMLInfoMakerクラスは、「楽天市場商品のHTMLに関する情報」を作成するクラスです。
このクラスで作成される「楽天市場商品のHTMLに関する情報」とは、以下の三つです。
- キーワードによる商品検索で取得した、「楽天市場商品の検索結果」。
- 「楽天市場商品の検索結果」を基に作成した、「当プラグイン用の商品情報の配列」。
- 楽天市場における、キーワードによる商品検索の検索条件に対応する、「一意な文字列」。
これら三つの情報は、楽天市場の「アフィリエイト商品のHTML」を作成する処理において、必要な情報です。
RakutenItemsHTMLInfoMakerクラスが上記の三つの情報を作るのは、
RakutenItemsHTMLInfoMakerクラスに対して、
ItemsHTMLInfoMakerインターフェースが適用されているからです。
※関連記事:「アマゾン商品のHTMLに関する情報」を作成する、「商品のHTMLに関する情報」を作成する「三つのメソッド」が宣言されている、ItemsHTMLInfoMakerインターフェース。
「楽天市場商品検索APIのURL」に対してHTTPリクエストを行い、「楽天市場商品の検索結果」を取得する
public function requestItemSearch(URLInfo $urlInfo, int $itemCount)
{
$response = RakutenRequest::requestIchibaItemSearch($urlInfo, $this->commonParameter, $this->restParameter);
return $response;
}
$urlInfo変数が保持する「楽天市場商品検索APIのURL」に対して、HTTPリクエストを行います。
その際、キーワードによる商品検索を実行します。
その商品検索の結果である「楽天市場商品の検索結果」を、$response変数に代入します。
return文で、$response変数が保持する「楽天市場商品の検索結果」を、返します。
このメソッドから返された「楽天市場商品の検索結果」は、次の見出しで説明しているmakeItemArray()メソッドの$response引数に渡されます。
$response引数が保持する「楽天市場商品の検索結果」を基に、「当プラグイン用の商品情報の配列」を作成する
public function makeItemArray($response, ItemHTMLOption $itemHTMLOption)
{
$itemArray = RakutenResponse::makeItemArray($response, $itemHTMLOption); // var_dump($itemArray);
return $itemArray;
}
$response引数が保持する「楽天市場商品の検索結果」を基に、「当プラグイン用の商品情報の配列」を作成します。
作成された「当プラグイン用の商品情報の配列」は、$itemArray配列変数に代入されます。
return文で、$itemArray配列変数が保持する「当プラグイン用の商品情報の配列」を、返します。
楽天市場における、キーワードによる商品検索の検索条件に対応する、一意な文字列を作成する
public function makeUniqueText(ItemHTMLOption $itemHTMLOption)
{
$operation = $this->searchOption->getOperation();
$keyword = $this->restParameter->getKeyword();
$numberToDisplay = $itemHTMLOption->getNumberToDisplay();
$cacheExpirationInSeconds = $itemHTMLOption->getCacheExpirationInSeconds();
$uniqueText = RakutenSettingSection::ID_PREFIX . $operation . $keyword . $numberToDisplay . $cacheExpirationInSeconds;
return $uniqueText;
}
楽天市場における、キーワードによる商品検索の検索条件に対応する、一意な文字列を作成します。
ここで作成した一意な文字列は、
「当プラグイン用の商品情報の配列」などをキャッシュに保存する際、
そのキャッシュを識別する識別子を作成するために、利用されます。
楽天市場における、キーワードによる商品検索の検索条件
楽天市場における、キーワードによる商品検索の検索条件については、以下の通りです。
$operation変数
$operation変数は、楽天市場系APIを呼び出す操作を保持します。
例えば、オペレーションがIchibaItemSearchの場合は、楽天市場商品検索APIを呼び出す操作を意味します。
楽天市場商品検索APIは、指定された検索キーワードを使って、商品検索を行います。
※関連記事:キーワードによる商品検索で、楽天市場の「アフィリエイト商品のHTML」を作成する、楽天市場系APIでは、IchibaItemSearchオペレーションは存在しない。
$keyword変数
$keyword変数は、商品を検索するキーワードを保持します。
このキーワードは、当プラグインのショートコードのkeyword属性で指定された文字列です。
※関連記事:アフィリエイト商品表示・WordPressプラグイン、ショートコードの属性
$numberToDisplay変数
$numberToDisplay変数は、「表示する商品数」を保持します。
この「表示する商品数」は、当プラグインのショートコードのnumber属性で指定された数値です。
※関連記事:アフィリエイト商品表示・WordPressプラグイン、ショートコードの属性
$cacheExpirationInSeconds変数
$cacheExpirationInSeconds変数は、「商品情報のキャッシュ時間(秒)」を保持します。
「商品情報のキャッシュ時間(秒)」は、以下の設定画面で設定されています。
- 当プラグインの「アフィリエイトの設定」
- 楽天の設定
- 商品情報のキャッシュ時間(秒)
- 楽天の設定
※関連記事:アフィリエイト商品表示・WordPressプラグイン、アフィリエイトの設定、楽天の設定。
※関連記事:「アマゾン商品のHTMLに関する情報」を作成する、一意な文字列がキャッシュの識別子として利用されるので、一意な文字列の中にキャッシュ時間を含める。
RakutenItemsHTMLInfoMaker.phpのソースコード
<?php
namespace goodsmemo\rakuten;
use goodsmemo\item\ItemsHTMLInfoMaker;
use goodsmemo\network\URLInfo;
use goodsmemo\rakuten\CommonRESTParameter;
use goodsmemo\rakuten\RESTParameter;
use goodsmemo\rakuten\SearchOption;
use goodsmemo\rakuten\RakutenRequest;
use goodsmemo\rakuten\RakutenResponse;
use goodsmemo\item\html\ItemHTMLOption;
use goodsmemo\option\rakuten\RakutenSettingSection;
require_once GOODS_MEMO_DIR . "item/ItemsHTMLInfoMaker.php";
require_once GOODS_MEMO_DIR . "network/URLInfo.php";
require_once GOODS_MEMO_DIR . "rakuten/CommonRESTParameter.php";
require_once GOODS_MEMO_DIR . "rakuten/RESTParameter.php";
require_once GOODS_MEMO_DIR . "rakuten/SearchOption.php";
require_once GOODS_MEMO_DIR . "rakuten/RakutenRequest.php";
require_once GOODS_MEMO_DIR . "rakuten/RakutenResponse.php";
require_once GOODS_MEMO_DIR . "item/html/ItemHTMLOption.php";
require_once GOODS_MEMO_DIR . "option/rakuten/RakutenSettingSection.php";
class RakutenItemsHTMLInfoMaker implements ItemsHTMLInfoMaker
{
private $commonParameter;
private $restParameter;
private $searchOption;
public function __construct(
CommonRESTParameter $commonParameter,
RESTParameter $restParameter,
SearchOption $searchOption
) {
$this->commonParameter = $commonParameter;
$this->restParameter = $restParameter;
$this->searchOption = $searchOption;
}
public function requestItemSearch(URLInfo $urlInfo, int $itemCount)
{
$response = RakutenRequest::requestIchibaItemSearch($urlInfo, $this->commonParameter, $this->restParameter);
return $response;
}
public function makeItemArray($response, ItemHTMLOption $itemHTMLOption)
{
$itemArray = RakutenResponse::makeItemArray($response, $itemHTMLOption); // var_dump($itemArray);
return $itemArray;
}
public function makeUniqueText(ItemHTMLOption $itemHTMLOption)
{
$operation = $this->searchOption->getOperation();
$keyword = $this->restParameter->getKeyword();
$numberToDisplay = $itemHTMLOption->getNumberToDisplay();
$cacheExpirationInSeconds = $itemHTMLOption->getCacheExpirationInSeconds();
$uniqueText = RakutenSettingSection::ID_PREFIX . $operation . $keyword . $numberToDisplay . $cacheExpirationInSeconds;
return $uniqueText;
}
}