【DMM API】「商品情報API」でデータを取得・出力する例|WordPress・PHP

「DMMアフィリエイト」のWebサービスでは、DMM内の商品データを扱えるAPIを提供しています。
今回は、そのAPIの中の「商品情報API」を利用し、WordPressのサイトでDMM.comの商品情報を取得・出力する例となります。
「商品情報API」でDMM内の商品情報を取得し出力する例
DMM APIのアフィリエイトID、API IDを取得
DMMのAPIでアフィリエイトを利用するには、「アフィリエイトID」と「API ID」が必要となります。そのため、まずDMMアフィリエイトの登録とAPIの利用登録をします。
DMMアフィリエイトの登録とAPIの利用登録については、それぞれ以下のリンク先を参考にしてみてください。
DMM内の商品情報を取得し出力
例では、WordPressでDMM APIの「商品情報API 」を利用し、DMM.com内のレンタルの簡単な商品データを3件、表示します。
また、表示する商品データは、タイトルと画像(DMM内の商品ページへのリンク付き)となります。
以下、ソースコードの例となり商品情報を出力する箇所に記述します。
<?php
// リクエストURLのパラメータで指定する値を変数に格納
$api_id = "xxxxxxxxxxxxx"; // 自身のAPI IDを指定
$aff_id = "xxxxxxxxxxxxx"; // 自身のアフィリエイトIDを指定
$site = "DMM.com"; // サイト名を指定
$service = "rental"; // サービス名を指定
$hits = "3"; // 取得する商品数を指定
$format = "xml"; // 出力形式を指定
// 「商品情報API」のリクエストURL
$url = "https://api.dmm.com/affiliate/v3/ItemList?api_id={$api_id}&affiliate_id={$aff_id}&site={$site}&service={$service}&hits={$hits}&output={$format}";
// XMLデータを取得しオブジェクトに変換
$xml = simplexml_load_file( $url );
// 取得した商品データの配列を変数$item_listに格納
$item_list = $xml->result->items->item;
foreach( $item_list as $item ){
// 商品のタイトル・画像・アフィリエイトリンクを取得
$title = $item->title;
$image = $item->imageURL->small;
$link = $item->affiliateURL;
// 商品情報を出力する際の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>';
}
?>
APIで取得したデータをキャッシュする場合
上記例の場合、商品データを取得するため、アクセス時に毎回APIリクエストを行いますが、取得したデータをデータベースにキャッシュ(一時保存)することで、APIリクエストの回数を減らすことも可能です。
詳しくは、以下のリンク先を参考にしてみてください。
simplexml_load_file関数以外で外部データを扱う方法
今回の例では外部データをsimplexml_load_file関数で扱いましたが、cURL関数を使い外部データを取得する方法もあります。
また、cURL関数ではデータ転送時にさまざまなオプションを設定することも可能です。詳しくは、以下のリンク先を参考にしてみてください。
SDKを利用する場合
DMM のAPIではSDKを利用することも可能です。詳しくは以下のリンク先を参考にしてみてください。
ソースコードの説明
以下、例のソースコードのポイントとなる箇所の説明となります。
リクエストURLを指定
以下の箇所では、API ID・アフィリエイトIDや商品データを取得する条件のパラメータを指定し、リクエストURLを作成します。
例のソースコード2行目からの箇所
// リクエストURLのパラメータで指定する値を変数に格納
$api_id = "xxxxxxxxxxxxx"; // 自身のAPI IDを指定
$aff_id = "xxxxxxxxxxxxx"; // 自身のアフィリエイトIDを指定
$site = "DMM.com"; // サイト名を指定
$service = "rental"; // サービス名を指定
$hits = "3"; // 取得する商品数を指定
$format = "xml"; // 出力形式を指定
// 「商品情報API」のリクエストURL
$url = "https://api.dmm.com/affiliate/v3/ItemList?api_id={$api_id}&affiliate_id={$aff_id}&site={$site}&service={$service}&hits={$hits}&output={$format}";
「商品情報API」の必須パラメータ
xxxxxxxxxxxxxとなっている$api_id と$aff_idの変数の値には、それぞれ自身の「API ID」と「アフィリエイトID」を指定します。また、「商品情報API」のリクエストURLでは、以下の3つパラメータは必須となります。
- api_id(API ID )
- affiliate_id(アフィリエイトID )
- site(サイト名)
パラメータserviceについて
例では、パラメータserviceの値にはrentalを指定し「DVD/CDレンタル」のデータを取得しています。その他のデータを取得したい場合には、DMM APIの「フロアAPI」からパラメータserviceの値 に指定できるデータを確認できます。
「フロアAPI」の確認方法については以下のリンク先を参考にしてみてください。
simplexml_load_file|XMLデータをオブジェクトに変換
例で作成したDMM APIでは商品情報をXMLデータで返します。
以下の箇所では、そのXMLデータをPHPで扱いやすくするため、simplexml_load_file関数を使用してオブジェクトに変換します。
また、JSONデータの商品情報を扱う場合や、データを連想配列に変換する場合は、以下のリンク先を参考にしてみてください。
例のソースコード12行目の箇所
// XMLデータを取得しオブジェクトに変換
$xml = simplexml_load_file( $url );
例では、APIリクエストをsimplexml_load_file関数で扱いましたが、APIリクエスト送信時のオプションの指定や、例外処理を実装して外部データを取得する方法もあります。
詳しくは、以下のリンク先を参考にしてみてください。
商品情報を取得・出力
以下の箇所では、オブジェクトに変換した商品情報のデータから必要な情報を取得し、ループを使いHTMLとして出力します。また、取得したデータ出力する際には、データに応じてエスケープしています。
例のソースコード15行目からの箇所
// 取得したデータの配列を変数$item_listに格納
$item_list = $xml->result->items->item;
foreach( $item_list as $item ){
// 商品のタイトル・画像・アフィリエイトリンクを取得
$title = $item->title;
$image = $item->imageURL->small;
$link = $item->affiliateURL;
// 商品情報を出力する際の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>';
}
まとめ
以上がDMMの「商品情報API」を利用し、WordPressのサイトでDMM.comの商品情報を取得・出力する例となります。
また、実際にAPIを利用する場合には、関数やクラス内で利用すると便利だと思います。
例で使用したDMMの「商品情報API」では、他にも指定できるリクエストパラメータや、取得できる情報(レスポンスフィールド)はあります。詳しくは文末の参考サイト内を確認してみてください。