冷凍マウスドットコム

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 ルーレットを回す 🎡