Pintu Aluminium Cubical Kantor: Bikin Kantor Kere Tampil Mahal, Tetangga Samperin Minta Rekomendasi
HEADLINE: "Bukan Cuma Pintu: Ini Paksa Tetangga Nganga Mulut Lihat Rumah Lo. Buktinya? 1.200 Unit Terjual ke Kontraktor Nakal yang […]
// ... existing code ... $table_licenses = $wpdb->prefix . 'cat_bkn_licenses'; $sql_licenses = "CREATE TABLE $table_licenses ( id mediumint(9) NOT NULL AUTO_INCREMENT, license_code varchar(50) NOT NULL, status varchar(20) DEFAULT 'active' NOT NULL, used_by varchar(100) DEFAULT '' NOT NULL, created_at datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, PRIMARY KEY (id), UNIQUE KEY license_code (license_code) ) $charset_collate;"; // 3. TABEL BARU: Tabel Bank Soal Asli $table_questions = $wpdb->prefix . 'cat_bkn_questions'; $sql_questions = "CREATE TABLE $table_questions ( id mediumint(9) NOT NULL AUTO_INCREMENT, category varchar(10) NOT NULL, /* TWK, TIU, TKP */ question_text text NOT NULL, option_a text NOT NULL, option_b text NOT NULL, option_c text NOT NULL, option_d text NOT NULL, option_e text NOT NULL, correct_answer varchar(5) NOT NULL, /* A, B, C, D, atau E */ explanation text NOT NULL, PRIMARY KEY (id) ) $charset_collate;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql_leaderboard); dbDelta($sql_licenses); dbDelta($sql_questions); // Eksekusi tabel soal }// ... existing code ... // MEMBUAT REST API (LEADERBOARD & VALIDASI LISENSI) add_action('rest_api_init', function () { register_rest_route('cat-bkn/v1', '/leaderboard', array( array('methods' => 'GET', 'callback' => 'cat_bkn_get_leaderboard', 'permission_callback' => '__return_true'), array('methods' => 'POST', 'callback' => 'cat_bkn_post_score', 'permission_callback' => '__return_true') )); register_rest_route('cat-bkn/v1', '/verify-license', array( array('methods' => 'POST', 'callback' => 'cat_bkn_verify_license', 'permission_callback' => '__return_true') )); // Tambahkan baris ini di bawah route verify-license register_rest_route('cat-bkn/v1', '/questions', array( array('methods' => 'GET', 'callback' => 'cat_bkn_get_questions', 'permission_callback' => '__return_true') )); }); function cat_bkn_verify_license(WP_REST_Request $request) { // ... existing code ... function cat_bkn_post_score(WP_REST_Request $request) { global $wpdb; $table_name = $wpdb->prefix . 'cat_bkn_leaderboard'; $params = $request->get_json_params(); if (empty($params['userId']) || !isset($params['score'])) return new WP_Error('invalid_data', 'Data tidak lengkap', array('status' => 400)); $wpdb->insert($table_name, array( 'user_id' => sanitize_text_field($params['userId']), 'display_name' => sanitize_text_field($params['displayName']), 'score' => intval($params['score']), 'twk' => intval($params['twk']), 'tiu' => intval($params['tiu']), 'tkp' => intval($params['tkp']), 'finished_at' => current_time('mysql') )); return rest_ensure_response(array('success' => true)); } // FUNGSI UNTUK MENGAMBIL SOAL DARI DATABASE function cat_bkn_get_questions() { global $wpdb; $table_name = $wpdb->prefix . 'cat_bkn_questions'; // Ambil semua soal dari database $results = $wpdb->get_results("SELECT * FROM $table_name"); $data = array(); foreach ($results as $r) { // Format data agar sesuai dengan struktur yang diminta JavaScript lama $data[] = array( 'id' => $r->category . '_' . $r->id, 'category' => $r->category, 'text' => $r->question_text, 'options' => array( 'A' => $r->option_a, 'B' => $r->option_b, 'C' => $r->option_c, 'D' => $r->option_d, 'E' => $r->option_e ), 'correct' => $r->correct_answer, 'explanation' => $r->explanation ); } return rest_ensure_response($data); }// ... existing code ... // APLIKASI UTAMA (HTML & JS) add_action('template_redirect', 'cat_bkn_serve_app'); function cat_bkn_serve_app() { if (isset($_GET['simulasi_cat']) && $_GET['simulasi_cat'] === 'app') { $is_logged_in = is_user_logged_in(); $current_user = wp_get_current_user(); $wp_api_url = rest_url('cat-bkn/v1/leaderboard'); $wp_api_verify_url = rest_url('cat-bkn/v1/verify-license'); $wp_api_questions_url = rest_url('cat-bkn/v1/questions'); ?> // ... existing code ...
HEADLINE: "Bukan Cuma Pintu: Ini Paksa Tetangga Nganga Mulut Lihat Rumah Lo. Buktinya? 1.200 Unit Terjual ke Kontraktor Nakal yang […]
5 Rekomendasi Pintu Aluminium Murah untuk Garasi dengan Daya Tahan Ekstra di 2026 Memilih pintu aluminium murah untuk garasi seringkali
5 Rekomendasi Pintu Aluminium Murah untuk Garasi dengan Daya Tahan Ekstra di 2026 Read Post »
Pertanyaan mendasar: Apakah pintu aluminium rumah type 36 2 daun merupakan pilihan tepat? Dalam dunia arsitektur hunian vertikal, rumah type
Pintu Aluminium Rumah Type 36 2 Daun: Analisis 50 Ahli Read Post »
Berbicara mengenai pintu aluminium lipat harga, harga pintu aluminium lipat terbaru 2026 menjadi topik krusial bagi para kontraktor, arsitek, dan
pintu aluminium lipat harga – Harga Pintu Aluminium Lipat 2026… Read Post »
Spesifikasi Pintu Aluminium Sliding 2800: Material, Ketebalan, dan Sistem Geser Pemilihan pintu aluminium sliding dengan lebar 2800 mm memerlukan pemahaman
Spesifikasi Pintu Aluminium Sliding 2800: Material, Ketebalan, dan Sistem Geser Read Post »
Software riset kata kunci dan penulisan otomatis telah menjadi fondasi krusial dalam strategi konten digital modern. Seiring dengan meningkatnya kompetisi
Software Riset Kata Kunci dan Penulisan Otomatis Terbaik 2026 Read Post »
harga arang briket batok kelapa per kg eceran: Realitas Ekonomi di Pasar Domestik Meskipun harga arang briket batok kelapa per
harga arang briket batok kelapa per kg eceran: Efisiensi Biaya Jangka Panjang Read Post »
Kenapa Sebenarnya Tetangga Anda Tidak Ingin Anda Pasang Pintu Aluminium 2 Daun Ini. Anda pikir mereka peduli dengan gaya rumah
Perpaduan Sempurna! 6 Desain Pintu Aluminium Minimalis 2 Daun Motif Kayu Read Post »
Berbicara mengenai pintu aluminium 4200 hemat biaya perawatan, Pesan via WhatsApp Pesan via WhatsApp Pendahuluan: Mengapa Biaya Perawatan Menjadi Faktor
Pintu Aluminium Hemat Biaya Perawatan: Bukti Nyata Penghematan 60% Read Post »
Pendahuluan Dalam beberapa tahun terakhir, perkembangan teknologi dan material dalam industri konstruksi telah membawa perubahan signifikan, terutama dalam penggunaan pintu
Pintu Aluminium dengan Desain Modern: Inovasi Tahun 2026 Read Post »