「楽天市場商品の検索結果」など、「楽天市場商品のHTMLに関する情報」を作成する

「楽天市場商品のHTMLに関する情報」を作成する処理について、PHPソースコードを解説しています。

ここで作成される「楽天市場商品のHTMLに関する情報」とは、以下の三つです。

  1. 楽天市場商品の検索結果。
  2. 当プラグイン用の商品情報の配列。
  3. 楽天市場における、キーワードによる商品検索の検索条件に対応する、一意な文字列。

「楽天市場商品の検索結果」など、「楽天市場商品のHTMLに関する情報」を作成する

class RakutenItemsHTMLInfoMaker implements ItemsHTMLInfoMaker
{

以下省略

RakutenItemsHTMLInfoMakerクラスは、「楽天市場商品のHTMLに関する情報」を作成するクラスです。

このクラスで作成される「楽天市場商品のHTMLに関する情報」とは、以下の三つです。

  1. キーワードによる商品検索で取得した、「楽天市場商品の検索結果」。
  2. 「楽天市場商品の検索結果」を基に作成した、「当プラグイン用の商品情報の配列」。
  3. 楽天市場における、キーワードによる商品検索の検索条件に対応する、「一意な文字列」。

これら三つの情報は、楽天市場の「アフィリエイト商品の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;
	}
}