キーワードによる商品検索で、アマゾンの「アフィリエイト商品のHTML」を作成する
Amazon Product Advertising APIにおいて、
キーワードで商品検索して商品情報を取得し、アマゾンの「アフィリエイト商品のHTML」を作成する。
switch文のオペレーションの場合分けで、上記の処理を行うPHPソースコードを解説しています。
SearchItemsオペレーションで、アマゾンの「アフィリエイト商品のHTML」を作成する
public static function makeHTML(ShortcodeAttribute $shortcodeAttribute) {
中略
$affiliateHTML;
$operation = $restParameter->getOperation ();
switch ($operation) {
case RESTParagraphUtils::SEARCH_ITEMS_OPERATION:
// 現時点では、「Operation="SearchItems", SearchIndex="all"の組み合わせ」で、キーワード検索する処理だけ行なう。
$affiliateHTML = KeywordSearchOperation::makeHTMLOfSearchOperation ( $urlInfo, $commonParameter, $restParameter, $itemHTMLOption, $productTypeOption, $displayHTMLOption );
break;
default :
throw new IllegalArgumentException ( "無効なオペレーション:" . $operation );
}
return $affiliateHTML;
}
SEARCH_ITEMS_OPERATION定数。
const SEARCH_ITEMS_OPERATION = "SearchItems"; // TODO Choice部品
商品検索を行うオペレーションを用いて、「アフィリエイト商品のHTML」を作成する
Amazon Product Advertising APIの商品検索を用いて、アマゾンの「アフィリエイト商品のHTML」を作成します。
上記のソースコードではswitch文を使って、オペレーションについて場合分けしています。
ですが実際のところ、場合分けは一通りだけです。
Product Advertising APIのオペレーションは、SearchItemsの場合だけ処理しています。
SearchItemsというオペレーションは、簡単に言うと、キーワードによる検索条件を満たす商品を取得します。
例えば、キーワードが「ダイエットサプリ」の場合、
ダイエットサプリという条件を満たす、アマゾンで販売されている商品の情報を取得します。
その取得した商品情報を元に、ダイエットサプリの商品について、「アフィリエイト商品のHTML」を作成します。
上記のソースコードで言えば、
KeywordSearchOperation::makeHTMLOfSearchOperation()関数の処理で、アマゾンの「アフィリエイト商品のHTML」を、作成しています。
作成された、アマゾンの「アフィリエイト商品のHTML」は、$affiliateHTML変数に代入されます。
その$affiliateHTML変数は、return文によって返されます。
アマゾンの商品を表示するなら、商品検索を行うSearchItemsを使えば充分です
アマゾンの商品を表示するワードプレスプラグインを作る場合、
Amazon Product Advertising APIのオペレーションにおいては、商品検索を行うSearchItemsを使えば充分です。
SearchItemsオペレーションは、指定された検索キーワードを使って、商品の検索結果を取得します。
とりあえず、このオペレーションさえ利用できれば、その他のオペレーションについては使わなくても良い、と言えます。
たくさんある「Amazon Product Advertising APIのオペレーション」に、対応するのは難しいです
Amazon Product Advertising APIのオペレーションには、SearchItemsの他も指定できます。
例えば、次のようなオペレーションがあったりします。
オペレーション | オペレーションの機能 |
---|---|
ItemLookup | 商品IDを指定して、商品属性を取得する。 |
BrowseNodeLookup | ブラウズノードIDを指定して、対応するノードの名前と、子ノードと親ノードの名前とブラウズノードIDを取得する。 |
GetItems | 指定したリソースに対する、アイテム属性を取得する。 |
Product Advertising APIの開発者ガイドを見たところ、オペレーションの種類は22種類ありました。
それらオペレーションの中には、利用率の低下によりサポートが終了した、というものもありました。
正直なところ、Product Advertising APIの開発者ガイドを読んでも、よくわからなかったりします。
結構な長文のガイドであり、英文で書かれていたりします。最新の情報が、英文だけの場合があります。
個人が(個人事業主が)、Product Advertising APIを取り扱うワードプレスプラグインを作る場合は、あんまり深入りしない方が良いです。
Product Advertising APIの多くのオペレーション機能に対応したプラグインを作ろうとしたら、負担が大きくて、時間もかかります。
実際のところ、たくさんのオペレーション機能に対応したプラグインを作るのは、難しいです。やめた方が良いです。
アマゾンの「アフィリエイト商品のHTML」を作成するのに必要とされる各情報を作成する
public static function makeHTML(ShortcodeAttribute $shortcodeAttribute) {
$optionMap = AffiliateOptionUtils::getAffiliateOption (); // ここで一回だけデータベースを読み込む。
$commonParameter = AmazonOptionUtils::makeCommonRESTParameter ( $optionMap );
$restParameter = AmazonOptionUtils::makeRESTParameter ( $optionMap, $shortcodeAttribute );
$displayHTMLOption = AmazonOptionUtils::makeDisplayHTMLPAAPINotAvailableOption ( $optionMap );
中略
$urlInfo = URLUtils::makeURLInfo ( $optionMap, URLParagraphUtils::HOSTNAME_ID );
$itemHTMLOption = AmazonItemHTMLUtils::makeItemHTMLOption ( $optionMap, $shortcodeAttribute );
$productTypeOption = AmazonOptionUtils::makeProductTypeOption ( $optionMap );
中略
$affiliateHTML = KeywordSearchOperation::makeHTMLOfSearchOperation (
$urlInfo,
$commonParameter, $restParameter,
$itemHTMLOption, $productTypeOption, $displayHTMLOption );
キーワードによる商品検索で、
アマゾンの「アフィリエイト商品のHTML」を作成する関数において、必要とされる各情報を作成します。
アマゾンの「アフィリエイト商品のHTML」を作成する関数とは、
KeywordSearchOperation::makeHTMLOfSearchOperation()関数です。
必要とされる各情報には、
- 当プラグインの「アフィリエイトの設定」
- アマゾンの設定
ここで入力された情報などがあります。
※関連記事:アフィリエイト商品表示・WordPressプラグイン、アフィリエイトの設定、アマゾンの設定。
例えば、以下のような情報があります。
- Product Advertising API ホスト
- Product Advertising API アクセスキー
- Product Advertising API アソシエイトタグ
- Product Advertising API シークレットキー
- Product Advertising API リージョン
- 商品名の表示文字数
- 商品情報のキャッシュ時間(秒)
これらの情報は、$optionMap変数に保持されています。
$optionMap変数は、ワードプレスのoptionsデータベーステーブルから取得した、当プラグイン専用の設定値です。
当プラグインのショートコードが記述されている部分に、任意のHTMLを表示する
$displayHTMLAlwaysEnabled = $displayHTMLOption->getDisplayHTMLPAAPINotAvailableAlwaysEnabled ();
if ($displayHTMLAlwaysEnabled) {
$displayHTML = DisplayHTMLPAAPINotAvailableUtils::makeDisplayHTMLPAAPINotAvailable ( $commonParameter, $restParameter, $displayHTMLOption );
return $displayHTML;
}
- 当プラグインの「アフィリエイトの設定」
- アマゾンの設定
- 表示するHTMLの表示設定
- アマゾンの設定
この表示設定において、常に表示するがチェックされていたら、上記ソースコードのif文の条件が成り立ちます。
※関連記事:アフィリエイト商品表示・WordPressプラグイン、アフィリエイトの設定、アマゾンの設定。
その場合、
- 当プラグインの「アフィリエイトの設定」
- アマゾンの設定
- Product Advertising API 利用不可の時、「表示するHTML」
- アマゾンの設定
ここに入力されたHTMLを、当プラグインのショートコードが記述されている部分に表示します。
「表示するHTML」としては、「アマゾンサイトを検索するリンクタグ」などを設定します。
<p>
アマゾンのサイトで<br>
<a href="https://www.amazon.co.jp/s?k=GOODS_MEMO_ENCODED_SEARCH_KEYWORD&__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=3UMT51BBJA9HO&sprefix=GOODS_MEMO_ENCODED_SEARCH_KEYWORD%2Caps%2C264&linkCode=ll2&tag=GOODS_MEMO_ASSOCIATE_TAG&linkId=842bd4595c951b490a9128c5ed8834e7&language=ja_JP&ref_=as_li_ss_tl">「GOODS_MEMO_SEARCH_KEYWORD」の商品を検索する</a>
</p>
以下の予約された文字列は、アソシエイトタグなどに置換されます。
予約された文字列 | 予約された文字列を置換する文字列 |
---|---|
GOODS_MEMO_ASSOCIATE_TAG | 「アソシエイトタグ」に置換されます。 |
GOODS_MEMO_SEARCH_KEYWORD | 「キーワード」に置換されます。 |
GOODS_MEMO_ENCODED_SEARCH_KEYWORD | 「URLエンコードされたキーワード」に置換されます。 |
Product Advertising API 利用不可の時、任意のHTML を表示する
どんな場合に「表示するHTML」を表示するかと言うと、Product Advertising API 利用不可の時です。
例えば、アマゾンのアフィリエイトで売上実績がない場合、Product Advertising APIは利用できなくなります。
AmazonAffiliate.phpのソースコード
<?php
namespace goodsmemo\amazon;
use goodsmemo\amazon\KeywordSearchOperation;
use goodsmemo\amazon\AmazonOptionUtils;
use goodsmemo\amazon\AmazonItemHTMLUtils;
use goodsmemo\amazon\displayhtml\DisplayHTMLPAAPINotAvailableUtils;
use goodsmemo\network\URLUtils;
use goodsmemo\option\AffiliateOptionUtils;
use goodsmemo\option\amazon\URLParagraphUtils;
use goodsmemo\option\amazon\RESTParagraphUtils;
use goodsmemo\shortcode\ShortcodeAttribute;
use goodsmemo\exception\IllegalArgumentException;
require_once GOODS_MEMO_DIR . "amazon/KeywordSearchOperation.php";
require_once GOODS_MEMO_DIR . "amazon/AmazonOptionUtils.php";
require_once GOODS_MEMO_DIR . "amazon/AmazonItemHTMLUtils.php";
require_once GOODS_MEMO_DIR . "amazon/displayhtml/DisplayHTMLPAAPINotAvailableUtils.php";
require_once GOODS_MEMO_DIR . "network/URLUtils.php";
require_once GOODS_MEMO_DIR . "option/AffiliateOptionUtils.php";
require_once GOODS_MEMO_DIR . "option/amazon/URLParagraphUtils.php";
require_once GOODS_MEMO_DIR . "option/amazon/RESTParagraphUtils.php";
require_once GOODS_MEMO_DIR . "shortcode/ShortcodeAttribute.php";
require_once GOODS_MEMO_DIR . "exception/IllegalArgumentException.php";
class AmazonAffiliate {
public static function makeHTML(ShortcodeAttribute $shortcodeAttribute) {
$optionMap = AffiliateOptionUtils::getAffiliateOption (); // ここで一回だけデータベースを読み込む。
$commonParameter = AmazonOptionUtils::makeCommonRESTParameter ( $optionMap );
$restParameter = AmazonOptionUtils::makeRESTParameter ( $optionMap, $shortcodeAttribute );
$displayHTMLOption = AmazonOptionUtils::makeDisplayHTMLPAAPINotAvailableOption ( $optionMap );
$displayHTMLAlwaysEnabled = $displayHTMLOption->getDisplayHTMLPAAPINotAvailableAlwaysEnabled ();
if ($displayHTMLAlwaysEnabled) {
$displayHTML = DisplayHTMLPAAPINotAvailableUtils::makeDisplayHTMLPAAPINotAvailable ( $commonParameter, $restParameter, $displayHTMLOption );
return $displayHTML;
}
$urlInfo = URLUtils::makeURLInfo ( $optionMap, URLParagraphUtils::HOSTNAME_ID );
$itemHTMLOption = AmazonItemHTMLUtils::makeItemHTMLOption ( $optionMap, $shortcodeAttribute );
$productTypeOption = AmazonOptionUtils::makeProductTypeOption ( $optionMap );
$affiliateHTML;
$operation = $restParameter->getOperation ();
switch ($operation) {
case RESTParagraphUtils::SEARCH_ITEMS_OPERATION:
// 現時点では、「Operation="SearchItems", SearchIndex="all"の組み合わせ」で、キーワード検索する処理だけ行なう。
$affiliateHTML = KeywordSearchOperation::makeHTMLOfSearchOperation ( $urlInfo, $commonParameter, $restParameter, $itemHTMLOption, $productTypeOption, $displayHTMLOption );
break;
default :
throw new IllegalArgumentException ( "無効なオペレーション:" . $operation );
}
return $affiliateHTML;
}
}