海外・英語メニューを作る時は対象国の通貨も表示するべき。Alpha VantageのAPIを使ってWordPress為替レートを自動取得

当ページのリンクには広告が含まれています。

飲食店のウェブサイトを作るとき、外国人のお客様用に英語のメニューが必要なことがあります。特に、ラーメンや寿司など、日本独自のレストランは外国人用のメニューは必要でしょう。英語メニューを作って表示する時は、日本円だけなじゃく、対象国の通貨も表示すると良いです。

私はフィリピンに住んでたことがありまして、売っている商品を現地のペソじゃなくて、円で価値を考えるときが多々ありました。外国に行ったときは、自分の国ではいくらになるのか、を判りやすく伝えることが大事です。

外国の通貨価値を自分の通貨価値に変えるときは、為替レートを用いることが必要です。プログラム的に為替レートを取得するには、Alpha Vantageがオススメです。理由は、無料で1日500回の為替レートの取得が可能だからです。

以下、Alpha Vantageを使用して、WordPressで対象国の通貨を取得するソースです。メニューに表記するだけなので、アクセス毎に為替レートを取得する必要は無いので、wp_cronで1日2回、12時間ごとに為替レートを取得し、DBへ保存し、表示するときに計算しています。

WordPressにおいて必要なソースは3つです。

1.wp_cronのスケジュール追加 12時間ごと
2.対象国の為替レートをDBに保存 12時間ごとに更新
3.為替レートを元に、円から対象国の通貨を表示

1.wp_cronのスケジュール追加



add_filter( 'cron_schedules', 'cron_every_12_hours' ); 
// 「cron_schedules」フックを使ってスケジュール追加

function cron_every_12_hours( $schedules ) {
  
    $schedules['cron_every_12_hours'] = array( 

      'interval' => 60 * 60 * 12, 
      'display' => __('12時間ごと') 
    );
	return $schedules;
}

2.対象国の為替レートをDBに保存



function update_exchange_rate_JPY_to_USD() {
  
  $exchange_rate = 0;

  // 為替レートのapiURLを設定
  // https://www.alphavantage.co/query?function=CURRENCY_EXCHANGE_RATE&from_currency=USD&to_currency=JPY&apikey=demo
  $base_url = "https://www.alphavantage.co/query?";
  
  // API用のGETパラメータを設定
  $query = array(
    "function" => "CURRENCY_EXCHANGE_RATE",
    "from_currency" => "JPY",
    "to_currency" => "USD",
    "apikey" => "ここは独自のAPI KEY",
  );
  
  // 連想配列をGETパラメータに変換
  $api_url = $base_url . http_build_query( $query );
  
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $api_url);
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
     
    $response = curl_exec($curl);
	
	$curl_status = 'ok';
	// エラーが発生したかどうかを確認します

	if(curl_errno( $curl ) ){
		$curl_status = 'Curl error: ' . curl_error( $curl );
	}
	
    $data = json_decode( $response, true );
  
	if( $data != false ){

		$key1 = 'Realtime Currency Exchange Rate';
		$key2 = '5. Exchange Rate';
		
		if( array_key_exists( $key1, $data )){
			
			if( array_key_exists( $key2, $data[$key1] )){
				
				// 現在のレート値を取得
				$exchange_rate = $data[$key1][$key2];
				
				// 取得した終値をデータベースに保存
				update_option( 'exchange_rate_JPY_to_USD', $exchange_rate );
			}
		}
	}
	
  curl_close($curl);
}
add_action ( 'cron_exchange_rate_JPY_to_USD', 'update_exchange_rate_JPY_to_USD' );

// cron登録処理
if ( !wp_next_scheduled( 'cron_exchange_rate_JPY_to_USD' ) ) {  // 何度も同じcronが登録されないように
  date_default_timezone_set('Asia/Tokyo');
  wp_schedule_event( strtotime('2023-04-20 02:00:00'), 'cron_every_12_hours', 'cron_exchange_rate_JPY_to_USD' );
}

3.為替レートを元に、円から対象国の通貨を表示。

ショートコードで、[exchange_JPY_to_USD amount=”日本円”]とすれば、日本円が対象国の通貨で表示されます。



function exchange_JPY_to_USD( $atts ) {
     
    $amount = $atts['amount'];
     
    if( empty( $amount ) ) return;
     
    $rate = get_option( 'exchange_rate_JPY_to_USD' );
  
    // 数字以外を除去
    $amount = preg_replace( '/[^\p{Nd}]/u', '', $amount );
	
    // 全て半角にする
    $amount = mb_convert_kana( $amount, 'n', 'UTF-8');
	
    $total_amount = $amount * $rate;
    return number_format( $total_amount, 2 );
}
add_shortcode( "exchange_JPY_to_USD", "exchange_JPY_to_USD" );

Alpha vantage API を叩いて返ってくるデータは下記です。



{
    "Realtime Currency Exchange Rate": {
        "1. From_Currency Code": "USD",
        "2. From_Currency Name": "United States Dollar",
        "3. To_Currency Code": "JPY",
        "4. To_Currency Name": "Japanese Yen",
        "5. Exchange Rate": "134.66100000",
        "6. Last Refreshed": "2023-04-24 11:44:01",
        "7. Time Zone": "UTC",
        "8. Bid Price": "134.65430000",
        "9. Ask Price": "134.66290000"
    }
}

英語を始めとした、日本国以外の言語でメニューを作る時は、ターゲットとなる国の通貨価値も表示してあげると、良いでしょう。そのために、ウェブサイトにおいて、WordPressで表示する方法です。

日本国以外の通貨は、日々、為替レートにおいて変化しています。つまり、為替レートを取得し、日本円と比較し、対象国の値段価値を出す必要があります。

為替レートは、Alpha Vantageに登録すれば、無料で使うことができます。完全無料で、頻繁には更新する必要のない、リアルタイムな為替レートを取得するには、Alpha Vantageが1番オススメです。

「為替レート WordPress」、「為替レート PHP」をGoogleで検索すると、外為オンラインやGoogleファイナンスが引っかかります。しかし、ともに、使うには不都合な点が多いです。

外為オンラインは、一般に公開している情報ではないし、対象国が著しく少ない。今回、アメリカドル以外に、中国の人民元も必要なんです。外為オンラインは人民元は無かったです。

Googleファイナンスはサービス終了。為替レートを提供しているところは有料が多い。ということで、頻繁に更新する必要が無ければ、無料のAlpha Vantageが1番良いです。

Alpha Vantageは1日500回という制限があります。メニューに対応させるなら、1日に500回も為替レートを取得する必要はありません。

この記事を書いた人

旦那デスノートで実際に使っている、WordpressやPHPのコードなどを公開しています。公開しているものは、ネットには あまり載っていない、痒いところに手が届くような拡張です。
@koichiromakita2

コメント

コメントする