飲食店のウェブサイトを作るとき、外国人のお客様用に英語のメニューが必要なことがあります。特に、ラーメンや寿司など、日本独自のレストランは外国人用のメニューは必要でしょう。英語メニューを作って表示する時は、日本円だけなじゃく、対象国の通貨も表示すると良いです。
私はフィリピンに住んでたことがありまして、売っている商品を現地のペソじゃなくて、円で価値を考えるときが多々ありました。外国に行ったときは、自分の国ではいくらになるのか、を判りやすく伝えることが大事です。
外国の通貨価値を自分の通貨価値に変えるときは、為替レートを用いることが必要です。プログラム的に為替レートを取得するには、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回も為替レートを取得する必要はありません。