【楽天 API】SDKを利用し楽天市場の商品データを取得・出力する例|WordPress・PHP

Rakuten Developersでは、楽天のサイト内の情報を扱えるAPIを提供しています。

今回は、そのAPIの中の「楽天商品検索API」を利用し、WordPressのサイトでSDKを使い楽天市場の商品データを取得・出力する簡単な例となります。

【楽天】APIを利用し楽天市場の商品データを取得し出力する例

楽天のAPIを利用する準備

楽天の各サービスのAPIでアフィリエイトを利用するには、Rakuten Developersで発行できる「アプリID」と「アフィリエイトID」が必要となります。

「アプリID」と「アフィリエイトID」の発行・確認方法は、以下のリンク先を参考にしてみてください。

楽天ウェブサービス: ご利用ガイド

Rakuten Web Service SDK for PHPをダウンロード

今回の例では、SDKで「楽天商品検索API」を扱うため、以下のいずれかの方法で、「Rakuten Web Service SDK for PHP」をダウンロードします。

composerでダウンロードする場合

PHPライブラリの依存関係を管理するcomposerで、SDKをダウンロードする場合、以下のコマンドとなります。

composer require rakuten-ws/rws-php-sdk

zipファイルでダウンロードする場合

SDKをzipファイルでダウンロードする場合、以下のリンク先からSDKのzipファイルをダウンロードし解凍します。

GitHub - rakuten-ws/rws-php-sdk: Rakuten Web Service PHP SDK

楽天市場内の商品データを取得し出力

今回の例では、WordPressのサイトで「楽天商品検索API」を利用します。

取得する商品データの条件は、楽天市場内を、キーワード「自転車」で検索した際にヒットする3件の商品データとします。

そして、取得したデータの中から、商品ページへのリンク付きで、商品のタイトル・画像・料金のデータを表示します。

以下、ソースコードとなり商品情報を表示させたい箇所に記述します。

また、ソースコード3行目のrequire文で読み込んでいる autoload.phpのパスは、SDKをダウンロードした場所によって異なるので、自身のSDKのautoload.phpのパスを確認して指定します。

<?php 
// SDKを読み込み
require __DIR__ . '/vendor/rakuten-ws/rws-php-sdk/autoload.php';

$raku_app_id = 'XXXXXXXX'; // アプリIDを指定
$raku_aff_id = 'XXXXXXXX'; // アフィリエイトIDを指定
$keyword = '自転車'; // キーワードを指定
$hits = '3'; // 商品データの取得数を指定

// RakutenRws_Clientクラスのインスタンスを作成
$client = new RakutenRws_Client();
$client->setApplicationId($raku_app_id);
$client->setAffiliateId($raku_aff_id);
$response = $client->execute(
    'IchibaItemSearch',
    array(
        'hits' => $hits,
        'keyword' => $keyword,
    )
);

// レスポンスが正常かを確認
if ($response->isOk()) {
    $output = '';
    foreach ($response as $item) {
        // 商品のタイトル・画像・価格・アフィリエイトリンクを取得
        $title = $item['itemName'];
        $price = $item['itemPrice'];
        $link = $item["affiliateUrl"];
        $image = $item["mediumImageUrls"][0]["imageUrl"];
        
        // // 商品情報を出力する際のHTML
        $output .= '<div><a href="' . esc_url( $link ) . '" target="_blank" rel="nofollow">';
        $output .= '<h3>' . esc_html( $title ) . '</h3>';
        $output .= '<img src="' . $image . '" alt="' . esc_attr( $title ) . '">';
        $output .= '<p>【価格】' . esc_html( $price )  . '円</p>';
        $output .= '</a></div>';
    }
} else {
    // レスポンスがエラーの場合。getMessage() でレスポンスメッセージを取得
    echo 'Error:'.$response->getMessage();
}
echo $output;
?>

SDKでSSL証明書のエラーが表示される場合

楽天APIのSDKをWindowsのローカル環境で利用すると、cURLでAPIに接続する際にSSL証明書のエラーが表示され商品データが取得できません。

そのような場合には、ローカル環境でSSL証明書を利用するか、SDKを使わずにAPIを利用する必要があります。

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

上記例の場合、アクセス時に毎回APIのデータを取得しますが、取得したデータをデータベースへキャッシュ(一時保存)することもできます。

詳しくは、以下のリンク先を参考にしてみてください。

ソースコードの説明

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

リクエストURLを指定

以下の箇所では、RakutenRws_Clientクラスのインスタンスを作成し、商品データを取得する条件のパラメータなどを指定しています。

そして、作成したインスタンスでexecuteメソッドでAPIに接続し、指定した商品データを配列で取得しています。

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

$raku_app_id = 'XXXXXXXX'; // アプリIDを指定
$raku_aff_id = 'XXXXXXXX'; // アフィリエイトIDを指定
$keyword = '自転車'; // キーワードを指定
$hits = '3'; // 商品データの取得数を指定

// RakutenRws_Clientクラスのインスタンスを作成
$client = new RakutenRws_Client();
$client->setApplicationId($raku_app_id);
$client->setAffiliateId($raku_aff_id);
$response = $client->execute(
    'IchibaItemSearch',
    array(
        'hits' => $hits,
        'keyword' => $keyword,
    )
);

「楽天商品検索API」の必須パラメータ

xxxxxxxxxxxxxとなっている$raku_app_id と$raku_aff_idの変数の値には、それぞれ自身の「アプリID」と「アフィリエイトID」を指定します。

また、「楽天商品検索API」のパラメータは、「アプリID」と、以下の中で最低1つが必須となります。今回の例では、keywordのパラメータを利用しています。

  • keyword(検索キーワード )
  • shopCode (ショップコード)
  • itemCode (アイテムコード)
  • genreId(ジャンルID)

パラメータに指定できる値について

パラメータに指定できる値については、以下のリンク先を参考にしてみてください。

楽天ウェブサービス: 楽天商品検索API(version:2017-07-06) | API一覧

商品情報を取得・出力

以下の箇所では、商品情報のデータの配列から必要な情報を取得し、ループを使いHTMLとして出力します。また、取得したデータ出力する際には、データに応じてエスケープしています。

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

// レスポンスが正常かを確認
if ($response->isOk()) {
    $output = '';
    foreach ($response as $item) {
        // 商品のタイトル・画像・価格・アフィリエイトリンクを取得
        $title = $item['itemName'];
        $price = $item['itemPrice'];
        $link = $item["affiliateUrl"];
        $image = $item["mediumImageUrls"][0]["imageUrl"];
        
        // // 商品情報を出力する際のHTML
        $output .= '<div><a href="' . esc_url( $link ) . '" target="_blank" rel="nofollow">';
        $output .= '<h3>' . esc_html( $title ) . '</h3>';
        $output .= '<img src="' . $image . '" alt="' . esc_attr( $title ) . '">';
        $output .= '<p>【価格】' . esc_html( $price ) . '円</p>';
        $output .= '</a></div>';
    }
} else {
    // レスポンスがエラーの場合。getMessage() でレスポンスメッセージを取得
    echo 'Error:'.$response->getMessage();
}
echo $output;

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

参考サイトなど

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

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

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