本ページはプロモーションが含まれています

Rinkerを「楽天新API」に対応するカスタマイズ方法をわかりやすく解説

WordPress
スポンサーリンク
スポンサーリンク

2026年5月13日から「世界標準規格対応」や「セキュリティ向上」のために、楽天APIが新しくなります。

ブログ運営で関係あるものといえば、物販神プラグインでおなじみのRinker

しかし、公式からアップデートがありません…。

完全移行日が近づくにつれ、不安が大きくなり…。
ついに自分でRinkerを楽天新API対応できるようにカスタマイズしてしまいました!

同じ状況で困っている方、きっと多いはず!

導入方法については、図をたくさん使用して説明していますので、初めての方でもわかりやすいかと思います。

それでは一緒にやっていきましょう!

このページでわかること
  • Rinkerを楽天新APIに対応する方法
スポンサーリンク

概要

楽天新APIによって、アクセスキー/リファラの送信が必須になりました。
さらに、APIのデータ構造も少し変更されたので、Rinkerもそれに対応する必要があります。

Rinker公式から音沙汰がないため、
「勝手にカスタマイズで対応しちゃおう!」
ということです。

そのうち公式から正式に更新があると思いますので、それまでの「繋ぎ」や「カスタマイズのヒント」としてご活用頂ければと思います。

注意事項・免責事項


免責事項
本プログラムの変更によって生じた損害やトラブルについて、当ブログは一切の責任を負いかねます。作業の際は、必ずご自身の判断と責任において実施してください。
開発者様との関係性

本カスタマイズに関して、プラグイン制作者の「やよい氏」は一切関与しておりません。本件に関するご質問や不具合の報告は、開発者様ではなく、必ず「ぐうてるブログ」のお問い合わせフォームまでお願いいたします。
動作環境

本手順は「yyi-rinker-1.12.0」をベースに作成しています。今後のアップデート内容によっては、本方法が適用できなくなる可能性がある点をご留意ください。
権利表記

CSS、JavaScript、および画像に関する著作権等の権利は、すべて「oyakosodate.com」管理者のやよい氏に帰属します。

また、楽天新APIのパラメータ詳細はこちらの公式ドキュメントを参考にしてください。

スポンサーリンク

プラグイン変更手順

まず、作業の全体の流れは次のとおりです。

① バックアップ
② 定数の追加
③ 入力フォーム追加
④ API処理の書き換え
⑤ ファイルをアップロード
⑥ 動作確認

項目としては多めですが、コードをコピペするだけの簡単な作業です。一緒にがんばってやっていきましょう!

用意するもの

本サイトの説明では、以下の紹介しているソフトを使用して解説しています。

メモ帳:Notepad++がおすすめ

Windows標準のメモ帳でも編集は可能ですが、プログラム編集には向いていません。
しかし「Notepad++」を使えば、行数表示だけでなく、文字列・関数ごとに自動に色をつけてくれるので、とっても見やすくなります。公式サイトは英語ですが、ソフトはしっかり日本語に対応していて、誰でも無料で利用できます。

FTPツール:FileZillaがおすすめ

高機能なFTPツールですが、使い方が少し分かりにくいので、こちらの記事を参考にしてください。こちらも公式サイトは英語表記ですが、ソフトは日本語で操作可能です。もちろん無料で使えます。

Rinkerプラグインのバックアップ

まず初めに、もしものときに備えてRinkerプラグインをバックアップを実施します。

もしバックアップをしていなくても、再度公式サイトからプラグインをダウンロードすれば修復可能ですので、安心してください!

  • 1
    バックアップ用のフォルダを作成する

    今回はわかりやすくするために「デスクトップ」に作成します。

  • 2
    FTPソフトで自分のサイトに接続する

    FTPソフトの設定については、こちらの記事を参考にしてください。

    自分のサイトに接続後、以下のフォルダにアクセスしてください。

    左窓(PC側):先ほど作成した「backup」フォルダ
    右窓(サーバー側):プラグインフォルダ「yyi-rinker」

  • 3
    プラグインフォルダを丸ごとコピーする

    右窓の「yyi-rinker」フォルダを右クリック後、「ダウンロード」をクリックします。

    しばらくすると、画面右下に「転送完了」ウインドウが表示されます。

    先ほど作成したフォルダにアクセスして、ダウンロードしたプラグインフォルダがあるかどうか確認します。

    Rinkerプラグインのバックアップ作業は、以上となります。

編集用ファイルをコピーする

先ほどバックアップしたフォルダから、編集に使用するファイルをコピーします。

各ファイルの役割ですが、以下のようになっていました。

yyi_rinker_abstract.php:定数の管理
yyi_rinker_main.php:メインプログラム
setting-form.php:WordPress管理画面内の設定画面

頭の片隅に入れておくと、理解しやすいかも…!?

定数追加

アクセスキー/リファラの定数追加し、データベース上で管理します。

  • 1
    Notepad++でyyi_rinker_abstract.phpを開く

    「Notepad++」を起動後、ウインドウに直接phpファイルをドラッグ&ドロップします。

  • 2
    定数を用意する

    170行目を改行後、以下のコードをコピーして追記します。

    コードをコピーする際は、アイコンをクリックすると楽できます。

    const RAKUTEN_ACCESS_KEY					= 'rakuten_access_key';
    	const RAKUTEN_REFERER_URL					= 'rakuten_referer_url';
  • 3
    定数のパラメータを設定する

    252行目を改行後、以下のコードをコピーして追記します。

    self::RAKUTEN_ACCESS_KEY => [
    			'value'		=> NULL,
    			'is_bool'	=> false,
    			'is_digit'	=> false,
    		],
    		self::RAKUTEN_REFERER_URL => [
    			'value'		=> NULL,
    			'is_bool'	=> false,
    			'is_digit'	=> false,
    		],
  • 4
    phpファイルを保存して閉じる

    Ctrl+Sで保存後、ファイルを閉じます。

    「yyi_rinker_abstract.php」のカスタマイズは、以上となります。

入力フォーム追加

WordPress管理画面上のRinker設定ページをカスタムします。
変更内容は「アクセスキー」と「リファラ」の入力欄になります。

  • 1
    Notepad++でsetting-form.phpを開く

    「Notepad++」を起動後、ウインドウに直接phpファイルをドラッグ&ドロップします。

  • 2
    入力欄を追加するコードを書き足す

    197行目を改行後、以下のコードをコピーして追記します。

        <h4>アクセスキー</h4>
        
        <table class="form-table">
            <tbody>
            <tr>
                <th>
                    <label for="rakuten_access_key_form">アクセスキー</label>
                </th>
                <td>
                    <input id="rakuten_access_key_form" type="text" name="rakuten_access_key" value="<?php echo esc_attr($this->array_get($params, 'rakuten_access_key', '')); ?>" />
                </td>
            </tr>
            </tbody>
        </table>
    
        <h4>リファラーURL</h4>
        <p>楽天アプリで登録した「許可されたWebサイト」と同じURLを入力してください。</p>
        <table class="form-table">
            <tbody>
            <tr>
                <th>
                    <label for="rakuten_referer_url_form">リファラーURL</label>
                </th>
                <td>
                    <input id="rakuten_referer_url_form" type="text" name="rakuten_referer_url" value="<?php echo esc_attr($this->array_get($params, 'rakuten_referer_url', '')); ?>" />
                </td>
            </tr>
            </tbody>
        </table>
    
    
  • 3
    phpファイルを保存して閉じる

    Ctrl+Sで保存後、ファイルを閉じます。

    ※画像は「yyi_rinker_abstract.php」

    「setting-form.php」のカスタマイズは、以上となります。

変数に値を格納

最後に「yyi_rinker_main.php」のカスタマイズとなります。
このファイルは変更箇所が多数ありますので、がんばって変更していきましょう!

  • 1
    Notepad++でyyi_rinker_main.phpを開く

    「Notepad++」を起動後、ウインドウに直接phpファイルをドラッグ&ドロップします。

  • 2
    変数を用意する

    63行目を改行後、以下のコードをコピーして追記します。

    public $rakuten_access_key = '';
        public $rakuten_referer_url = '';
  • 3
    入力フォームに入力した内容を変数に入れる

    103行目を改行後、以下のコードをコピーして追記します。

    $this->rakuten_access_key = get_option( $this->option_column_name( self::RAKUTEN_ACCESS_KEY ) );
    		$this->rakuten_referer_url = get_option( $this->option_column_name( self::RAKUTEN_REFERER_URL ) );

    変数関連は、以上となります。
    ファイルは閉じずに、引き続き別の内容を編集していきます。

商品検索プログラムを新API用に変更

これが、今回一番大きく変更したポイントです。

  • 1
    商品検索プログラムを変更する

    まずは、元々あるプログラムをコメントアウト(無効化)します。

    3,129行~3,152行を選択後、Ctrl+Kでコメントアウトします。

    コメントアウトの手順はエディタごとに異なるため、環境に合わせて読み替えてください。

    3,153行目を改行後、以下のコードをコピーして追記します。

    		if ( strlen( trim( $keywords ) ) === 0 ) {
    			return ['error' => [ 'code' => '', 'message_jp' => '正しいキーワードを入力してください' ] ];
    		}
    
    		$uri = 'https://openapi.rakuten.co.jp/ichibams/api/IchibaItem/Search/20220601';
    
    		// リファラーURLの形式をチェック
    		$formatted_referrer = trim($this->rakuten_referer_url); // 空白を除去
    		$formatted_referrer = ($formatted_referrer && !str_starts_with($formatted_referrer, 'http')) 
    		    ? "https://$formatted_referrer" 
    		    : $formatted_referrer;
    
    		$params = [
    		    'applicationId' => $this->rakuten_application_id,
    		    'accessKey'     => $this->rakuten_access_key,
    		    'affiliateId'   => $this->rakuten_affiliate_id,
    		    'formatVersion' => 2,
    		    'hit'           => 30,
    		    'referrer'      => $formatted_referrer,
    		    'page'          => max(1, intval($page)),
    		    'sort'          => $this->rakuten_sort($sort),
    		];
    
    		if ( $is_itemcode ) {
    		    $params['availability'] = 0;
    		    $params['itemCode']     = trim($keywords);
    		} else {
    		    $params['availability'] = 1;
    		    $params['keyword']      = trim($keywords);
    		}
    
    		$request_url = $uri . '?' . http_build_query($params);
    		//デバッグ用  echo "<script>console.log('Rakuten URL: " . esc_js($request_url) . "');</script>";
    
    		$response = wp_remote_get(
    		    $request_url,
    		    array(
    		        'timeout' => 30,
    		        'headers' => array(
    		            'Referer' => $formatted_referrer,
    		            'Origin'  => $formatted_referrer,
    		        ),
    		    )
    		);
    
    
  • 2
    データ階層を変更する

    新APIでは商品データの取得パスが簡素化されましたので、それに伴ってプログラムも合わせる必要があります。

    旧:items[0].item.itemName
    新:items[0].itemName

    itemという階層が不要になりました。

    3,231~3,308行を先ほど同様、コメントアウト(無効化)します。

    3,309行目を改行後、以下のコードをコピーして追記します。

    			if ( isset( $datas[ 'Items' ]) ) {
    				$item = [];
    				foreach( $datas[ 'Items' ] AS $data ) {
    					if ( $is_itemcode ) {
    						$item[ self::PRICE_COLUMN ]		= $data['itemPrice'];
    						$item[ self::PRICE_AT_COLUMN ]	= date_i18n( 'Y/m/d H:i:s' );
    						$item[ self::RAKUTEN_TITLE_URL_COLUMN ]		= $data['affiliateUrl'];
    						$item[ self::IMAGE_S_SIZE_W_COLUMN ]	= 64;
    						$item[ self::IMAGE_S_SIZE_H_COLUMN ]	= 64;
    						$item[ self::IMAGE_M_SIZE_W_COLUMN ]	= 128;
    						$item[ self::IMAGE_M_SIZE_H_COLUMN ]	= 128;
    						$item[ self::IMAGE_L_SIZE_W_COLUMN ]	= '';
    						$item[ self::IMAGE_L_SIZE_H_COLUMN ]	= '';
    						$items[] = $item;
    						break;
    					}
    					// メイン画像のデータを追加
    					foreach( $this->variant_images AS $column => $marks) {
    						$item[ $column ] = [];
    					}
    
    					$item[ self::TITLE_COLUMN ]					= $data['itemName'];
    					$item[ self::RAKUTEN_ITEMCODE_COLUMN ]		= $data['itemCode'];
    					$item[ self::RAKUTEN_TITLE_URL_COLUMN ]		= $data['affiliateUrl'];
    					if (isset( $data['smallImageUrls'][0] )){
    						$item[ self::IMAGE_S_COLUMN ]				= $data['smallImageUrls'][ 0 ];
    						foreach($data[ 'smallImageUrls' ] AS $image) {
    							$item[ self::S_VARIANT_IMAGES_COLUMN ] []= [
    								'url' => $image,
    								'w' => 64,
    								'h' => 64,
    							];
    						}
    					} else {
    						$item[ self::IMAGE_S_COLUMN ]				= '';
    					}
    
    					if (isset( $data[ 'mediumImageUrls' ][ 0 ] )){
    						$item[ self::IMAGE_M_COLUMN ]				= $data['mediumImageUrls'][ 0 ];
    						foreach($data[ 'mediumImageUrls' ] AS $image) {
    							$item[ self::M_VARIANT_IMAGES_COLUMN ][] = [
    								'url' => $image,
    								'w' => 128,
    								'h' => 128,
    							];
    						}
    					} else {
    						$item[ self::IMAGE_M_COLUMN ]				= '';
    					}
    					$item[ self::IMAGE_L_COLUMN ]				= '';
    					$item[ self::BRAND_COLUMN ]					= '';
    					$item[ self::PRICE_COLUMN ]					= $data['itemPrice'];
    					$item[ self::AMAZON_URL_COLUMN ]			= $this->generate_amazon_original_link( $keywords );
    					$item[ self::RAKUTEN_URL_COLUMN ]			= $this->generate_rakuten_original_link( $keywords );
    					$item[ self::YAHOO_URL_COLUMN ]				= $this->generate_yahoo_original_link( $keywords );
                        $item[ self::MERCARI_URL_COLUMN ]		    = $this->generate_mercari_original_link( $keywords );
    
    					$item[ self::IMAGE_S_SIZE_W_COLUMN ]	= 64;
    					$item[ self::IMAGE_S_SIZE_H_COLUMN ]	= 64;
    					$item[ self::IMAGE_M_SIZE_W_COLUMN ]	= 128;
    					$item[ self::IMAGE_M_SIZE_H_COLUMN ]	= 128;
    					$item[ self::IMAGE_L_SIZE_W_COLUMN ]	= '';
    					$item[ self::IMAGE_L_SIZE_H_COLUMN ]	= '';
    
    					//楽天市場のみ
    					$item[ 'affiliateRate' ] = $data['affiliateRate'];
    					$item[ 'reviewAverage' ] = $data['reviewAverage'];
    
    					foreach( $this->variant_images AS $column => $marks) {
    						$item[ $column ] = json_encode($item[ $column ]);
    					}
    
    					$items[] = $item;
    				}
    			}
    		}
    		return $items;
    	}
  • 3
    phpファイルを保存して閉じる

    Ctrl+Sで保存後、ファイルを閉じます。

    ※画像は「yyi_rinker_abstract.php」

    「yyi_rinker_main.php」のカスタマイズは、以上となります。

サーバー上のphpファイルを上書きする

プログラムのカスタマイズは完了したので、後は上書きするだけです。

  • 1
    FTPソフトで自分のサイトに接続する

    FTPソフトの設定については、こちらの記事を参考にしてください。

    自分のサイトに接続後、以下のフォルダにアクセスしてください。

  • 2
    編集したphpファイルをアップロードする

    画像のように2ファイルを選択後、右クリックして「ダウンロード」をクリックします。

    ファイルの上書き確認が表示されるので、「上書き」にチェックをしてからOKをクリックします。

    2ファイルあるので、2回確認ウインドウが表示されます。

    次に、右窓で「parts」フォルダを選択後、左窓のsetting-form.phpを「右クリック→アップロード」の順にクリックします。

    先ほどと同じように上書き確認が表示されるので、「上書き」にチェックをしてからOKをクリックします。

    これで、サイトのRinkerプラグインデータが更新されました。

スポンサーリンク

動作確認

実際に楽天新APIの「アクセスキー」と「リファラ」を作成したフォームに入力して、動作確認を実施します。

  • 1
    WordPressのRinker設定ページにアクセスする

    ブラウザからWordPressの管理画面にアクセスし、Rinkerプラグインの管理画面にアクセスします。

  • 2
    フォームに必要事項を入力する

    「setting-form.php」のカスタムが成功していれば、フォームが追加されています。

    Rakuten Web Serviceにログインして、必要情報をコピーしてから各フォームに貼り付けてください。

    リファラは「https://domain.com」の形に補完して、APIに送信しています。

    ページ最下の変更を保存をクリックして、設定を完了させます。

  • 3
    適当に新規商品を作成する

    商品は何でも良いので、商品を新規作成します。

    例では「お茶」で作成しています。

  • 4
    新規記事(テストページ)を作成し、Rinkerを配置する

    テストページを作成して、先程作成した商品を配置し、新しいタブでプレビューします。

    楽天ボタンをクリックし、正常にショップへアクセスできるか確認してください。

  • 5
    商品情報の再取得をONにする

    動作に問題がなければ、過去に掲載している商品のURLを更新するために、商品情報の再取得をONにして、変更を保存します。

    自動更新をOFFで運営している方は、1日経過後に再度OFFにしてください。

  • 6
    楽天アフィリエイトの管理画面で動作確認する

    しばらくしてから、楽天アフィリエイトの管理画面で「売上げ」や「クリック数」が正常に動作しているか確認してください。

    以上でカスタマイズの手順はすべて完了です。
    設定お疲れ様でした!

スポンサーリンク

まとめ

ここまで読んで頂き、ありがとうございます。

いかがでしたでしょうか。

もうすぐ楽天新APIに完全移行の時期なので、ぜひカスタマイズにチャレンジしてください。

Rinker公式からアップデートがあればいいのですが…。

不明な点がございましたら、気軽にお問い合せフォームよりご連絡をお願いします。できる限りサポートさせて頂きます。

それではまた会いましょう!

コメント

タイトルとURLをコピーしました