Pelajari langkah demi langkah membuat aplikasi pendaftaran siswa baru di WordPress menggunakan database terpisah untuk keamanan dan performa.

  Jon Mukidi   Tutorials   6 min read

Cara Membuat Aplikasi Pendaftaran Siswa Baru di WordPress dengan Database Terpisah

Pelajari langkah demi langkah membuat aplikasi pendaftaran siswa baru di WordPress menggunakan database terpisah untuk keamanan dan performa.

Dengarkan artikel

Tentang fitur ini

Artikel ini akan memberikan panduan lengkap mulai dari pembuatan database, pengembangan plugin WordPress, hingga fitur tambahan untuk aplikasi pendaftaran siswa baru. Setiap langkah dijelaskan secara detail dengan contoh kode yang siap pakai.

Dalam tutorial ini, Anda akan mempelajari cara membuat aplikasi pendaftaran siswa baru berbasis WordPress dengan database terpisah. Solusi ini sangat ideal untuk sekolah, kampus, atau lembaga pendidikan yang ingin memiliki sistem pendaftaran mandiri tanpa mengganggu database utama WordPress.

Mengapa Database Terpisah?

  1. Keamanan lebih baik: Melindungi data sensitif siswa
  2. Performa lebih baik: Tidak membebani database WordPress utama
  3. Skalabilitas: Mudah dikembangkan tanpa mengganggu situs utama
  4. Portabilitas: Data pendaftaran bisa dipindahkan dengan mudah

Aplikasi Pendaftaran Siswa WordPress

Persiapan Awal

Sebelum memulai, pastikan Anda memiliki:

  • Akses ke WordPress admin
  • Akses ke cPanel atau phpMyAdmin
  • Editor kode (VS Code, Sublime Text, dll)
  • Pengetahuan dasar PHP dan MySQL

Langkah 1: Membuat Database Terpisah

1.1 Buat database baru

Buka cPanel atau phpMyAdmin dan buat database baru:

  • Nama database: db_pendaftaran_siswa
  • Username: user_pendaftaran
  • Password: buat_password_kuat

1.2 Buat tabel pendaftaran

Jalankan query SQL berikut di database baru:

CREATE TABLE pendaftaran (
id INT AUTO_INCREMENT PRIMARY KEY,
nama_lengkap VARCHAR(100) NOT NULL,
tempat_lahir VARCHAR(50) NOT NULL,
tanggal_lahir DATE NOT NULL,
jenis_kelamin ENUM('Laki-laki', 'Perempuan') NOT NULL,
agama VARCHAR(20) NOT NULL,
alamat TEXT NOT NULL,
nama_orang_tua VARCHAR(100) NOT NULL,
no_telepon VARCHAR(15) NOT NULL,
email VARCHAR(50) NOT NULL,
asal_sekolah VARCHAR(100) NOT NULL,
tanggal_daftar TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Langkah 2: Membuat Plugin WordPress

Membuat Plugin Wordpress

2.1 Struktur folder plugin

Buat folder baru di wp-content/plugins dengan nama pendaftaran-siswa dengan struktur:

pendaftaran-siswa/
├── pendaftaran-siswa.php
└── templates/
└── form.php

2.2 File utama plugin (pendaftaran-siswa.php)

<?php
/*
Plugin Name: Pendaftaran Siswa Baru
Description: Aplikasi pendaftaran siswa baru dengan database terpisah
Version: 1.0
Author: Nama Anda
*/
defined('ABSPATH') or die('No script kiddies please!');
// Fungsi untuk membuat koneksi database
function ps_db_connect() {
$db_host = "localhost";
$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);
}
return $conn;
}
// Shortcode untuk menampilkan form
function ps_registration_form() {
ob_start();
include plugin_dir_path(__FILE__) . 'templates/form.php';
return ob_get_clean();
}
add_shortcode('form_pendaftaran_siswa', 'ps_registration_form');
// Tangani submit 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!');
}
$conn = ps_db_connect();
$data = array(
'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",
$data['nama_lengkap'],
$data['tempat_lahir'],
$data['tanggal_lahir'],
$data['jenis_kelamin'],
$data['agama'],
$data['alamat'],
$data['nama_orang_tua'],
$data['no_telepon'],
$data['email'],
$data['asal_sekolah']
);
if ($stmt->execute()) {
// Kirim email notifikasi
$to = $data['email'];
$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>';
} else {
$_SESSION['ps_message'] = '<div class="ps-error">Terjadi kesalahan. Silakan coba lagi.</div>';
}
$stmt->close();
$conn->close();
// Redirect untuk menghindari resubmit
wp_redirect($_SERVER['REQUEST_URI']);
exit;
}
}
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');

Langkah 3: Membuat Template Form (templates/form.php)

Lembar Folmulir Pendaftaran

<?php
// Tampilkan pesan sukses/error jika ada
if (isset($_SESSION['ps_message'])) {
echo $_SESSION['ps_message'];
unset($_SESSION['ps_message']);
}
?>
<div class="ps-container">
<header class="ps-header">
<div class="logo">
<div class="logo-icon">📚</div>
<div class="logo-text">
<h1>Pendaftaran Siswa Baru</h1>
<p>Aplikasi Pendaftaran Terintegrasi dengan WordPress</p>
</div>
</div>
</header>
<div class="content-container">
<div class="form-section">
<h2 class="section-title">Formulir Pendaftaran</h2>
<form id="registrationForm" method="post">
<?php wp_nonce_field('ps_registration_nonce', 'ps_nonce'); ?>
<!-- Semua field form dari kode HTML sebelumnya -->
<!-- ... -->
<button type="submit" name="submit_registration" class="btn btn-primary">Daftar Sekarang</button>
</form>
</div>
<div class="info-section">
<!-- Bagian informasi pendaftaran -->
<!-- ... -->
</div>
</div>
<footer>
<p>&copy; <?php echo date('Y'); ?> Aplikasi Pendaftaran Siswa Baru</p>
</footer>
</div>

Langkah 4: Mengaktifkan dan Menggunakan Plugin

  1. Zip folder plugin pendaftaran-siswa
  2. Upload melalui menu Plugins > Add New > Upload Plugin di WordPress
  3. Aktifkan plugin
  4. Buat halaman baru dan tambahkan shortcode [form_pendaftaran_siswa]
  5. Publikasikan halaman

Fitur Tambahan untuk Pengembangan

1. Dashboard Admin

Tambahkan menu admin untuk melihat data pendaftar:

// Tambahkan menu admin
function ps_admin_menu() {
add_menu_page(
'Data Pendaftaran Siswa',
'Pendaftaran Siswa',
'manage_options',
'ps-dashboard',
'ps_admin_dashboard',
'dashicons-groups',
30
);
}
add_action('admin_menu', 'ps_admin_menu');
// Tampilkan dashboard admin
function ps_admin_dashboard() {
$conn = ps_db_connect();
$result = $conn->query("SELECT * FROM pendaftaran ORDER BY tanggal_daftar DESC");
echo '<div class="wrap"><h1>Data Pendaftaran Siswa</h1>';
if ($result->num_rows > 0) {
echo '<table class="wp-list-table widefat fixed striped">';
echo '<thead><tr>
<th>ID</th>
<th>Nama Lengkap</th>
<th>Tanggal Lahir</th>
<th>Asal Sekolah</th>
<th>Tanggal Daftar</th>
</tr></thead>';
while($row = $result->fetch_assoc()) {
echo '<tr>
<td>'.$row['id'].'</td>
<td>'.$row['nama_lengkap'].'</td>
<td>'.date('d/m/Y', strtotime($row['tanggal_lahir'])).'</td>
<td>'.$row['asal_sekolah'].'</td>
<td>'.date('d/m/Y H:i', strtotime($row['tanggal_daftar'])).'</td>
</tr>';
}
echo '</table>';
} else {
echo '<p>Belum ada data pendaftaran.</p>';
}
echo '</div>';
$conn->close();
}

2. Ekspor Data ke Excel

Ekspor Database ke Excel

Tambahkan fungsi untuk mengekspor data:

function ps_export_data() {
if (isset($_GET['export']) && current_user_can('manage_options')) {
$conn = ps_db_connect();
$result = $conn->query("SELECT * FROM pendaftaran");
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="data_pendaftaran.csv"');
$output = fopen('php://output', 'w');
// Header CSV
fputcsv($output, array(
'ID', 'Nama Lengkap', 'Tempat Lahir', 'Tanggal Lahir',
'Jenis Kelamin', 'Agama', 'Alamat', 'Nama Orang Tua',
'No Telepon', 'Email', 'Asal Sekolah', 'Tanggal Daftar'
));
// Data
while($row = $result->fetch_assoc()) {
fputcsv($output, $row);
}
fclose($output);
exit;
}
}
add_action('admin_init', 'ps_export_data');

Keamanan Tambahan

  1. Sanitasi dan Validasi Data: Pastikan semua input disanitasi
  2. Nonce Verification: Gunakan nonce untuk verifikasi form
  3. Prepared Statements: Gunakan saat berinteraksi dengan database
  4. Role Capabilities: Batasi akses ke menu admin
  5. HTTPS: Pastikan situs menggunakan SSL

Troubleshooting Umum

  1. Form tidak muncul:

    • Pastikan shortcode benar [form_pendaftaran_siswa]
    • Cek error log server
    • Pastikan plugin aktif
  2. Data tidak tersimpan:

    • Periksa koneksi database
    • Pastikan tabel ada di database yang benar
    • Cek izin pengguna database
  3. Email tidak terkirim:

    • Cek fungsi wp_mail di server
    • Pastikan tidak ada plugin konflik
    • Cek folder spam penerima

Kesimpulan

Dengan mengikuti tutorial ini, Anda telah berhasil membuat:

  • Sistem pendaftaran siswa baru di WordPress
  • Database terpisah untuk data pendaftaran
  • Form pendaftaran dengan validasi
  • Sistem notifikasi email
  • Dashboard admin untuk melihat data
  • Fitur ekspor data ke CSV

Aplikasi ini dapat dikembangkan lebih lanjut dengan menambahkan:

  • Upload berkas persyaratan
  • Sistem seleksi otomatis
  • Integrasi pembayaran online
  • Notifikasi WhatsApp
  • Tampilan progress pendaftaran

Dengan arsitektur database terpisah, aplikasi ini akan tetap stabil meskipun situs WordPress Anda memiliki traffic tinggi atau banyak plugin lain.

Beri tahu saya di komentar jika Anda memiliki pertanyaan atau membutuhkan bantuan pengembangan lebih lanjut!

Disclaimer: Artikel tutorial ini dibuat hanya agar Anda memahami bagaimana cara membuat fitur Pendaftaran Siswa Baru yang bisa dipublikasikan pada website berbasis WordPress. Anda bisa memakai langsung kode yang ada dalam tutorial ini. Meskipun saya sudah mempertimbangkan dari sisi keamanan kode, Namun tanggungjawab atas penggunaan kode di atas terhadap keamanan situs, penyalahgunaan kode dan lain hal, adalah aAnda sendiri. Jadi gunakan dengan pertimbangan matang atau konsultasikan pada yang benar-benar paham atau sudah berpengalaman mengelola situs web berbasis WordPress sebelum memakai sumber kode yang saya bagikan SECARA GRATIS ini.

Lihat artikel lainnya

Artikel terkait

Lihat semua »