Plugin Name: Pendaftaran Siswa Baru
Description: Aplikasi pendaftaran siswa baru dengan database terpisah
defined('ABSPATH') or die('No script kiddies please!');
// Fungsi untuk membuat koneksi database
function ps_db_connect() {
$db_user = "user_pendaftaran";
$db_pass = "password_anda";
$db_name = "db_pendaftaran_siswa";
$conn = new mysqli($db_host, $db_user, $db_pass, $db_name);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
// Shortcode untuk menampilkan form
function ps_registration_form() {
include plugin_dir_path(__FILE__) . 'templates/form.php';
add_shortcode('form_pendaftaran_siswa', 'ps_registration_form');
function ps_handle_submission() {
if (isset($_POST['submit_registration'])) {
// Validasi nonce untuk keamanan
if (!isset($_POST['ps_nonce']) || !wp_verify_nonce($_POST['ps_nonce'], 'ps_registration_nonce')) {
die('Security check failed!');
'nama_lengkap' => sanitize_text_field($_POST['fullName']),
'tempat_lahir' => sanitize_text_field($_POST['birthPlace']),
'tanggal_lahir' => sanitize_text_field($_POST['birthDate']),
'jenis_kelamin' => sanitize_text_field($_POST['gender']),
'agama' => sanitize_text_field($_POST['religion']),
'alamat' => sanitize_textarea_field($_POST['address']),
'nama_orang_tua' => sanitize_text_field($_POST['parentName']),
'no_telepon' => sanitize_text_field($_POST['phone']),
'email' => sanitize_email($_POST['email']),
'asal_sekolah' => sanitize_text_field($_POST['previousSchool'])
$sql = "INSERT INTO pendaftaran (nama_lengkap, tempat_lahir, tanggal_lahir, jenis_kelamin, agama, alamat, nama_orang_tua, no_telepon, email, asal_sekolah)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ssssssssss",
// Kirim email notifikasi
$subject = 'Pendaftaran Siswa Baru Berhasil';
$message = "Terima kasih telah mendaftar di sekolah kami.\n\n";
$message .= "Nama: " . $data['nama_lengkap'] . "\n";
$message .= "Asal Sekolah: " . $data['asal_sekolah'] . "\n\n";
$message .= "Kami akan menghubungi Anda segera untuk informasi lebih lanjut.";
wp_mail($to, $subject, $message);
// Set session untuk pesan sukses
$_SESSION['ps_message'] = '<div class="ps-success">Pendaftaran berhasil! Kami telah mengirimkan email konfirmasi.</div>';
$_SESSION['ps_message'] = '<div class="ps-error">Terjadi kesalahan. Silakan coba lagi.</div>';
// Redirect untuk menghindari resubmit
wp_redirect($_SERVER['REQUEST_URI']);
add_action('init', 'ps_handle_submission');
// Enqueue style dan script
function ps_enqueue_assets() {
wp_enqueue_style('ps-styles', plugin_dir_url(__FILE__) . 'css/style.css');
wp_enqueue_script('ps-scripts', plugin_dir_url(__FILE__) . 'js/script.js', array('jquery'), '1.0', true);
add_action('wp_enqueue_scripts', 'ps_enqueue_assets');