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

Rakuten Developersでは、楽天市場などの情報を扱えるAPIを提供しています。

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

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

アプリID・アフィリエイトIDを取得

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

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

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

ComposerでRakuten Web Service SDK for PHPをインストール

PHPライブラリの依存関係を管理するComposerでSDKをインストールするため、プロジェクト内のComposerを配置するディレクトリにcdコマンドで移動し、以下のコマンドを実行します。

composer require rakuten-ws/rws-php-sdk

ComposerをMacで利用する方法については、以下のリンク先を参考にしてみてください。

また、Composerを利用しないインストール方法については、文末の参考サイトを確認してみてください。

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

例では、WordPressのサイトで「楽天商品検索API」を利用し、簡単な商品データを表示します。

取得するデータの条件は、楽天市場内をキーワード「自転車」で検索した際にヒットする3件の商品データとします。そして、取得したデータの中から、商品ページへのリンク付きで、商品のタイトル・画像・料金のデータを表示します。

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

<?php 
// SDKを利用するためComposerのautoload.phpを読み込み
require __DIR__ . '/vendor/autoload.php';

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

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

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

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

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

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

上記例の場合、商品データを取得するため、アクセス時に毎回APIリクエストを行いますが、取得したデータをデータベースにキャッシュ(一時保存)して、APIリクエストの回数を減らすことも可能です。

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

PHPコードの説明

以下、例のソースコードの簡単な説明となります。

APIリクエストを指定して送信

以下の箇所では、楽天のAPIを扱うRakutenRws_Clientクラスのインスタンスを作成し、商品データを取得するリクエストパラメータなどを指定しています。

そして、作成したインスタンスのexecuteメソッドでAPIリクエストを送信し、レスポンスデータを取得しています。

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

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

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

まとめ

以上が「楽天商品検索API」を利用し、WordPressで楽天市場の商品データを取得・出力する簡単な例となります。

また、実際にAPIを利用する場合には、関数やクラス内で利用すると便利だと思います。

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

参考サイトなど

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

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

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

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