Belajar Membuat Plugin WordPress Yang Mengakses Database

Untuk membuat sebuah plugin WordPress yang dapat menginput ke database, Anda dapat mengikuti langkah-langkah berikut:

  1. Buatlah sebuah direktori untuk plugin Anda. Misalnya, my-database-plugin. Direktori ini harus diletakkan di dalam direktori /wp-content/plugins/ di dalam instalasi WordPress.
  2. Buatlah sebuah file PHP dengan nama yang sama dengan nama direktori plugin Anda. Misalnya, my-database-plugin.php. File ini akan berisi kode plugin Anda.
  3. Di dalam file my-database-plugin.php, pertama-tama Anda perlu menambahkan kode untuk mengaktifkan plugin Anda. Berikut adalah contohnya:
<?php
/*
Plugin Name: My Database Plugin
Plugin URI: https://example.com/my-database-plugin
Description: Plugin untuk menginput data ke database.
Version: 1.0
Author: Nama Anda
Author URI: https://example.com/
*/

// kode plugin Anda akan ditulis di sini

4. Setelah itu, Anda dapat menulis kode untuk menginput data ke database. Untuk itu, Anda dapat menggunakan fungsi-fungsi bawaan WordPress seperti global $wpdb dan $wpdb->insert(). Berikut adalah contoh kode untuk menginput data ke dalam tabel wp_my_table dengan kolom-kolom name dan email:

global $wpdb;

$table_name = $wpdb->prefix . 'my_table';

$data = array(
'name' => 'Nama Pengguna',
'email' => 'email@domain.com'
);

$wpdb->insert( $table_name, $data );
  1. Setelah Anda menulis kode plugin Anda, Anda dapat menyimpan file my-database-plugin.php dan mengaktifkan plugin tersebut melalui menu “Plugins” di dalam dashboard WordPress.

Setelah itu, plugin Anda siap digunakan untuk menginput data ke dalam database. Namun, pastikan untuk melakukan validasi data yang diinput agar tidak terjadi kerentanan keamanan pada website Anda.

  1. Sebaiknya, Anda juga menambahkan menu di dalam dashboard WordPress untuk memudahkan pengguna dalam menggunakan plugin Anda. Untuk itu, Anda dapat menambahkan kode berikut di dalam file my-database-plugin.php:
function my_database_plugin_menu() {
add_menu_page(
'My Database Plugin',
'My Database Plugin',
'manage_options',
'my-database-plugin',
'my_database_plugin_options'
);
}

function my_database_plugin_options() {
if ( ! current_user_can( 'manage_options' ) ) {
wp_die( __( 'Anda tidak memiliki hak akses ke halaman ini.' ) );
}

global $wpdb;

if ( isset( $_POST['submit'] ) ) {
$name = $_POST['name'];
$email = $_POST['email'];

$table_name = $wpdb->prefix . 'my_table';

$data = array(
'name' => $name,
'email' => $email
);

$wpdb->insert( $table_name, $data );

echo "<div class='notice notice-success is-dismissible'><p>Data berhasil disimpan ke dalam database.</p></div>";
}
?>
<div class="wrap">
<h1>My Database Plugin</h1>
<form method="post" action="">
<label for="name">Nama</label>
<input type="text" name="name" id="name" required>

<label for="email">Email</label>
<input type="email" name="email" id="email" required>

<input type="submit" name="submit" value="Simpan">
</form>
</div>
<?php
}

add_action( 'admin_menu', 'my_database_plugin_menu' );

Kode tersebut akan menambahkan menu “My Database Plugin” di dalam dashboard WordPress, dan saat pengguna mengakses halaman tersebut, akan muncul form untuk menginput data ke dalam tabel wp_my_table.

  1. Terakhir, Anda juga dapat menambahkan kode untuk mengaktifkan dan menonaktifkan tabel di dalam fungsi aktivasi dan deaktivasi plugin. Berikut adalah contoh kode:
function my_database_plugin_activate() {
global $wpdb;

$table_name = $wpdb->prefix . 'my_table';
$charset_collate = $wpdb->get_charset_collate();

$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
name varchar(50) NOT NULL,
email varchar(50) NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";

require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}

function my_database_plugin_deactivate() {
global $wpdb;

$table_name = $wpdb->prefix . 'my_table';

$sql = "DROP TABLE IF EXISTS $table_name;";

$wpdb->query( $sql );
}

register_activation_hook( __FILE__, 'my_database_plugin_activate' );
register_deactivation_hook( __FILE__, 'my_database_plugin_deactivate' );

Dalam contoh kode tersebut, fungsi my_database_plugin_activate() akan membuat tabel wp_my_table saat plugin diaktifkan, sedangkan fungsi my_database_plugin_deactivate() akan menghapus tabel tersebut saat plugin dinonaktifkan. Kode ini menggunakan fungsi dbDelta() untuk membuat tabel dengan cara yang aman dan menghindari kesalahan pada struktur tabel.

  1. Selanjutnya, untuk mengakses dan memanipulasi data yang tersimpan di dalam tabel, Anda bisa menggunakan fungsi-fungsi yang disediakan oleh WordPress melalui objek $wpdb. Beberapa fungsi yang sering digunakan antara lain:
  • $wpdb->get_results( $query ): mengembalikan hasil query dalam bentuk array object.
  • $wpdb->get_var( $query ): mengembalikan hasil query dalam bentuk satu nilai.
  • $wpdb->get_row( $query ): mengembalikan hasil query dalam bentuk satu baris data dalam bentuk object.
  • $wpdb->update( $table, $data, $where, $format = null, $where_format = null ): mengupdate data pada tabel.
  • $wpdb->delete( $table, $where, $where_format = null ): menghapus data pada tabel.
  1. Contoh penggunaan fungsi-fungsi tersebut adalah sebagai berikut:
global $wpdb;

// Mengambil semua data pada tabel
$results = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}my_table" );
foreach ( $results as $result ) {
echo "ID: {$result->id}, Nama: {$result->name}, Email: {$result->email}<br>";
}

// Mengambil data pada tabel dengan kriteria tertentu
$name = 'John';
$results = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}my_table WHERE name = '$name'" );
foreach ( $results as $result ) {
echo "ID: {$result->id}, Nama: {$result->name}, Email: {$result->email}<br>";
}

// Update data pada tabel
$id = 1;
$data = array(
'name' => 'Jane',
'email' => 'jane@example.com'
);
$where = array( 'id' => $id );
$wpdb->update( "{$wpdb->prefix}my_table", $data, $where );

// Menghapus data pada tabel
$id = 2;
$wpdb->delete( "{$wpdb->prefix}my_table", array( 'id' => $id ) );

Dalam contoh kode di atas, kita mengambil semua data pada tabel dengan menggunakan fungsi get_results(), mengambil data pada tabel dengan kriteria tertentu menggunakan fungsi get_results() dengan menambahkan kondisi WHERE, mengupdate data pada tabel dengan menggunakan fungsi update(), dan menghapus data pada tabel dengan menggunakan fungsi delete().

Itulah beberapa langkah yang bisa Anda lakukan untuk membuat plugin WordPress yang dapat menginput data ke dalam database dan memanipulasi data yang ada di dalamnya. Tentu saja, terdapat banyak hal lain yang bisa ditambahkan dan disesuaikan sesuai kebutuhan Anda. Semoga informasi ini bermanfaat!