WordPressプラグインを開発するときは、日の出やサンセットタイムなどのユーザーの地理的位置に基づいて動的なコンテンツを提供する必要があることがよくあります。 PHPのdate_sunset()関数は、日没時間を簡単に計算できます。ただし、ユーザーの「ローカル」サンセットタイムをリアルタイムで表示するには、いくつかのポジショニングテクノロジーが必要です。
この記事では、WordPressプラグインにdate_sunset()を埋め込み、サンセット時間を動的に表示し、段階的に実装します。
PHPはサーバー側で実行され、ユーザーデバイスの地理的位置に直接アクセスできません。したがって、JavaScriptを使用してユーザーの緯度と経度を取得し、Ajaxを介して情報をサーバーに渡す必要があります。
// プラグインマスターファイルまたは特定で PHP ファイルに追加します
function m66net_enqueue_location_script() {
wp_enqueue_script('m66net-location-script', 'https://m66.net/js/location.js', array('jquery'), null, true);
// 合格 wp_localize_script バンドル AJAX URL に渡します JS
wp_localize_script('m66net-location-script', 'm66net_ajax_object', array(
'ajax_url' => admin_url('admin-ajax.php')
));
}
add_action('wp_enqueue_scripts', 'm66net_enqueue_location_script');
location.jsファイルの例( https://m66.net/js/location.jsに保存):
jQuery(document).ready(function($){
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
$.post(m66net_ajax_object.ajax_url, {
action: 'm66net_send_location',
latitude: position.coords.latitude,
longitude: position.coords.longitude
}, function(response) {
$('#m66net-sunset-time').html(response);
});
});
} else {
$('#m66net-sunset-time').html('あなたの位置情報を取得できません');
}
});
次に、WordPressでAJAXインターフェイスを作成し、ユーザーのジオロケーション情報を処理し、日没時間を返します。
function m66net_calculate_sunset() {
if (isset($_POST['latitude']) && isset($_POST['longitude'])) {
$latitude = floatval($_POST['latitude']);
$longitude = floatval($_POST['longitude']);
$timestamp = time();
$sunset = date_sunset($timestamp, SUNFUNCS_RET_STRING, $latitude, $longitude, 90.583333, date('Z') / 3600);
echo 'あなたの地元の夕日の時間はです:' . $sunset;
} else {
echo '日没時間を計算できません';
}
wp_die(); // 重要:終了 AJAX 対処する
}
add_action('wp_ajax_m66net_send_location', 'm66net_calculate_sunset');
add_action('wp_ajax_nopriv_m66net_send_location', 'm66net_calculate_sunset');
説明しましょう:
sunfuncs_ret_string let date_sunset() 19:21などのフォーマットされた時間文字列を返します。
90.583333は標準的な海面空気圧角であり、通常はデフォルトで使用されます。
日付( 'z') / 3600は、サーバーのタイムゾーンに従って修正されます。
最後に、日没時間(記事、ページ、ガジェットなど)を表示する必要があるHTMLを追加します。
<div id="m66net-sunset-time">日没の時間を取得します...</div>
ユーザーがページにアクセスする限り、JavaScriptがトリガーされ、ユーザーの場所が自動的に検出され、正確な日没時間が表示されます!
HTTPSをサポートする場合は、 M66.NETリソースもHTTPSに移動することを確認してください。それ以外の場合は、ブラウザが混合コンテンツリクエストをブロックします。
date_sunset()の結果は、サーバー時間標準です。プラグインがさまざまなサーバー領域に適応したい場合、より洗練されたタイムゾーン処理も必要です。
ユーザーが位置情報を共有することを拒否したときなど、プラグインに合理的なエラープロンプトを追加してください。