【バリューコマース】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データを取得・エンコードし、PHPで扱えるようにオブジェクトに変換
$json  = file_get_contents( $url );
$json = mb_convert_encoding( $json, 'UTF-8', 'ASCII, JIS, UTF-8, eucJP-win, SJIS-win' );
$json = json_decode( $json );

// 取得した商品数
$count = $json->resultCount;

$output = '';
if( $count ){
	// 取得した商品データの配列を変数$itemsに格納
	$items = $json->items;
	foreach( $items as $item ){
		$title = $item->title; // 商品タイトルを取得
		$image = $item->imageFree->url; // ラージサイズの商品画像を取得
		$link = $item->link; // 商品へのリンクを取得
		$ad_tag = $item->pvImg; // 広告表示数カウント用のadタグを取得

		// 商品情報を出力する際のHTML
		$output .= '<div><a href="' . esc_url( $link ) . '" target="_blank">';
		$output .= '<p>' . esc_html( $title ) . '</p>';
		$output .= '<img src="' . esc_url( $image ) . '" alt="' . esc_attr( $title ) . '">';
		$output .= '</a></div>' . $ad_tag;
	}
}
echo $output;
?>

取得したAPIのデータをキャッシュする場合

上記例の場合、アクセス時に毎回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データを取得・エンコードし、PHPで扱えるようにオブジェクトに変換
$json  = file_get_contents( $url );
$json = mb_convert_encoding( $json, 'UTF-8', 'ASCII, JIS, UTF-8, eucJP-win, SJIS-win' );
$json = json_decode( $json );

例では、JSONデータをfile_get_contents関数で読み込みましたが、cURL関数を使い、外部データを取得する方法もあります。

cURL関数では、データ取得時にさまざまなオプションを設定することも可能です。詳しくは、以下のリンク先を参考にしてみてください。

商品情報を取得・出力

以下の箇所では、商品データがある場合、オブジェクトに変換した商品情報のデータから必要な情報を取得し、ループを使いHTMLとして出力します。また、取得したデータ出力する際には、データに応じてエスケープしています。

なお、バリューコマースでは、広告のリンク毎に、広告表示数カウント用のadタグが必要となるため、adタグも商品リンク毎に出力しています。

例のソースコード16行目からの箇所

// 取得した商品数
$count = $json->resultCount;

$output = '';
if( $count ){
	// 取得した商品データの配列を変数$itemsに格納
	$items = $json->items;
	foreach( $items as $item ){
		$title = $item->title; // 商品タイトルを取得
		$image = $item->imageFree->url; // ラージサイズの商品画像を取得
		$link = $item->link; // 商品へのリンクを取得
		$ad_tag = $item->pvImg; // 広告表示数カウント用のadタグを取得

		// 商品情報を出力する際のHTML
		$output .= '<div><a href="' . esc_url( $link ) . '" target="_blank">';
		$output .= '<p>' . esc_html( $title ) . '</p>';
		$output .= '<img src="' . esc_url( $image ) . '" alt="' . esc_attr( $title ) . '">';
		$output .= '</a></div>' . $ad_tag;
	}
}
echo $output;

例で使用したバリューコマースの商品APIでは、他にも指定できるリクエストパラメータや、取得できる情報(レスポンスフィールド)はあります。詳しくは以下の参考サイト内を確認してみてください。

参考サイトなど

コメント投稿またはTwitterで返信

コメントは、以下の項目(*は必須項目)を入力し「コメントを送信」ボタンから送信お願いします。メールアドレスは公開されることはありません。
Twitterで返信する場合はこちらから。

また、コメントは承認制となります。