【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を利用することも可能です。詳しくは以下のリンク先を参考にしてみてください。

SDK - DMM API

ソースコードの説明

以下、例のソースコードのポイントとなる箇所の説明となります。

リクエスト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」では、他にも指定できるリクエストパラメータや、取得できる情報(レスポンスフィールド)はあります。詳しくは文末の参考サイト内を確認してみてください。

参考サイトなど

コメント投稿コメント投稿欄を開く

コメントは項目欄(*は必須項目)を入力し、「コメントを送信」ボタンをクリックしてください。 (メールアドレスは公開されることはありません。コメントの公開は承認制となります。)

また、多忙によりコメントには返信できない場合があります。

Twitterで返信する場合はこちらから。