1. functions.php
に追加
// ルーレット抽選用 API
add_action('rest_api_init', function () {
register_rest_route('roulette/v1', '/spin', array(
'methods' => 'POST',
'callback' => 'roulette_spin',
));
});
function roulette_spin() {
$option_key = 'roulette_prizes';
// 初期設定(残り本数)
$default = array(
'🥇 1等: 3000円OFFクーポン' => 3,
'🥈 2等: 2000円OFFクーポン' => 5,
'🥉 3等: 1000円OFFクーポン' => 10,
'⭐ 4等: 500円OFFクーポン' => 20,
'🎫 5等: 100円OFFクーポン' => 9999,
);
// DBから取得、未登録ならデフォルトを保存
$pool = get_option($option_key, null);
if (!$pool) {
update_option($option_key, $default);
$pool = $default;
}
$total = array_sum($pool);
if ($total <= 0) {
return array('message' => '抽選終了');
}
$rand = rand(1, $total);
$sum = 0;
foreach ($pool as $prize => $count) {
$sum += $count;
if ($rand <= $sum) {
$result = $prize;
$pool[$prize] -= 1;
update_option($option_key, $pool);
return array(
'prize' => $result,
'remaining' => $pool
);
}
}
}
2. 投稿や固定ページに埋め込む HTML + JS
“`html ルーレットを回す 🎡