【バリューコマース】APIで商品データを取得・出力する例|WordPress・PHP
サイトやブログなどのアフィリエイトで、『バリューコマース』を利用している場合があるかもしれません。
今回は、そのバリューコマースのAPIを利用し、WordPressのサイトで簡単な商品データを取得・出力する例となります。
【バリューコマース】APIで商品データを取得・出力する例
バリューコマースのAPIを利用する準備
バリューコマースでは、広告によってAPIを利用し商品データを取得することが可能です。
また、バリューコマースのAPIを利用するには以下の準備が必要となります。
- APIが利用できる広告と提携
- APIのトークンを確認
APIが利用できる広告の確認方法と、トークンの取得方法については以下のリンク先を参考にしてみてください。
商品APIを利用するための準備|バリューコマース アフィリエイト
LOHACO(ロハコ)内の商品データを取得し出力
今回の例では、WordPressでバリューコマースの商品APIを利用し、LOHACO(ロハコ)のサイト内の簡単な商品データを表示します。
取得するデータの条件は、LOHACOのfooddrinkカテゴリー内を、キーワード「ボトルコーヒー」で検索した際にヒットする3件の商品データとします。
そして、取得したデータの中から以下の商品データを表示します。
- 商品タイトル
- 商品画像
- 商品へのリンク
- 広告表示数を確認するadタグ
以下、ソースコードの例となり、商品データを表示する箇所に記述します。
<?php
$value_token = 'XXXXXXXX'; // トークンを指定
$keyword = 'ボトルコーヒー'; // 検索ワードを指定
$category ='fooddrink'; // カテゴリーを指定
$valu_shop = 'LOHACO'; // 検索するサイトを指定
$hits = '3'; // 取得する件数を指定
$format = 'json'; // レスポンスデータのフォーマットを指定
// 「商品API」のリクエストURL
$url = "http://webservice.valuecommerce.ne.jp/productdb/search?token={$value_token}&keyword={$keyword}&category={$category}&results_per_page={$hits}&merchant={$valu_shop}&format={$format}";
// JSONデータを取得・エンコードしオブジェクトに変換
$json = file_get_contents( $url );
$json = mb_convert_encoding( $json, 'UTF-8', 'ASCII, JIS, UTF-8, eucJP-win, SJIS-win' );
$obj = json_decode( $json );
// 取得した商品数
$count = $obj->resultCount;
if( $count ){
// 取得した商品データの配列を変数$itemsに格納
$items = $obj->items;
foreach( $items as $item ){
$title = $item->title; // 商品タイトルを取得
$image = $item->imageFree->url; // ラージサイズの商品画像を取得
$link = $item->link; // 商品へのリンクを取得
$ad_tag = $item->pvImg; // 広告表示数カウント用のadタグを取得
// 商品情報を出力する際のHTML
echo '<div><a href="' . esc_url( $link ) . '" target="_blank">';
echo '<p>' . esc_html( $title ) . '</p>';
echo '<img src="' . esc_url( $image ) . '" alt="' . esc_attr( $title ) . '">';
echo '</a></div>' . $ad_tag;
}
}else{
echo '<p>商品はありません。</p>';
}
?>
APIで取得したデータをキャッシュする場合
上記例の場合、商品データを取得するため、アクセス時に毎回APIリクエストを行いますが、取得したデータをデータベースにキャッシュ(一時保存)することで、APIリクエストの回数を減らすことも可能です。
詳しくは、以下のリンク先を参考にしてみてください。
file_get_contents関数以外で外部データを読み込む場合
今回の例では、外部データを読み込む際にfile_get_contents関数を利用しましたが、APIリクエスト送信時のオプションの指定や、例外処理を実装して外部データを取得する方法もあります。
詳しくは、以下のリンク先を参考にしてみてください。
ソースコードの説明
以下、例のソースコードのポイントとなる箇所の説明となります。
リクエストURLを指定
以下の箇所では、トークンや商品データを取得する条件のパラメータを指定しリクエストURLを作成します。
例のソースコード2行目からの箇所
$value_token = 'XXXXXXXX'; // トークンを指定
$keyword = 'ボトルコーヒー'; // 検索ワードを指定
$category ='fooddrink'; // カテゴリーを指定
$valu_shop = 'LOHACO'; // 検索するサイトを指定
$hits = '3'; // 取得する件数を指定
$format = 'json'; // レスポンスデータのフォーマットを指定
// 「商品API」のリクエストURL
$url = "http://webservice.valuecommerce.ne.jp/productdb/search?token={$value_token}&keyword={$keyword}&category={$category}&results_per_page={$hits}&merchant={$valu_shop}&format={$format}";
「商品API」の必須パラメータ
xxxxxxxxxxxxxとなっている変数の値には、自身のAPIのトークンを指定します。
また、「商品API」のリクエストURLのパラメータは、「token(トークン)」と、以下の中で最低1つが必須となります。今回の例では、keywordとcategoryのパラメータを利用しています。
- keyword(検索キーワード )
- category(商品カテゴリー)
- lat_min, lat_max, lng_min, lng_max (位置情報 )
- sub_store(サイト内のサブストアID)
- product_id(商品識別コード)
パラメータに指定できる値について
パラメータに指定できる値については、以下のリンク先を参考にしてみてください。
商品APIリファレンスガイド|バリューコマース アフィリエイト
JSONデータをオブジェクトに変換
例で作成したバリューコマースの 商品APIのリクエストは、商品情報をJSONデータで返します。
以下の箇所では、JSONデータを取得・エンコードし、PHPで扱いやすくするためオブジェクトに変換します。
また、XMLデータの商品情報を扱う場合や、データを連想配列に変換する場合は、以下のリンク先を参考にしてみてください。
例のソースコード11行目の箇所
// JSONデータを取得・エンコードし、オブジェクトに変換
$json = file_get_contents( $url );
$json = mb_convert_encoding( $json, 'UTF-8', 'ASCII, JIS, UTF-8, eucJP-win, SJIS-win' );
$obj = json_decode( $json );
商品情報を取得・出力
以下の箇所では、商品データがある場合、オブジェクトに変換した商品情報のデータから必要な情報を取得し、ループを使いHTMLとして出力します。また、取得したデータ出力する際には、データに応じてエスケープしています。
なお、バリューコマースでは、広告のリンク毎に、広告表示数カウント用のadタグが必要となるため、adタグも商品リンク毎に出力しています。
例のソースコード16行目からの箇所
// 取得した商品数
$count = $obj->resultCount;
if( $count ){
// 取得した商品データの配列を変数$itemsに格納
$items = $obj->items;
foreach( $items as $item ){
$title = $item->title; // 商品タイトルを取得
$image = $item->imageFree->url; // ラージサイズの商品画像を取得
$link = $item->link; // 商品へのリンクを取得
$ad_tag = $item->pvImg; // 広告表示数カウント用のadタグを取得
// 商品情報を出力する際のHTML
echo '<div><a href="' . esc_url( $link ) . '" target="_blank">';
echo '<p>' . esc_html( $title ) . '</p>';
echo '<img src="' . esc_url( $image ) . '" alt="' . esc_attr( $title ) . '">';
echo '</a></div>' . $ad_tag;
}
}else{
echo '<p>商品はありません。</p>';
}
まとめ
以上がバリューコマースのAPIを利用し、WordPressのサイトで簡単な商品データを取得・出力する例となります。
また、実際にAPIを利用する場合には、関数やクラス内で利用すると便利だと思います。
例で使用したバリューコマースの商品APIでは、他にも指定できるリクエストパラメータや、取得できる情報(レスポンスフィールド)はあります。詳しくは文末の参考サイト内を確認してみてください。