Membuat custom Tabel pada Database WordPress artinya ingin mengembangkan situs WordPress lebih besar lagi. WordPress sendiri memang memungkinkan hal ini dilakukan. Sudah banyak plugin atau theme yang menggunakan fitur ini, sebut saja plugin WooCommerce salah satunya.

Karena awalnya WordPress dibuat untuk platform Blogging sehingga Struktur Database yang dibuat di khususkan untuk kebutuhan Blogging.

Sebagai catatan, untuk membuat custom tabel pada WordPress dibutuhkan pemahaman mengenai Bahasa SQL (MySQL).

01. Membuat Tabel
Pada artikel kali ini kita akan membuat tabel untuk menyimpan data Subscriber, kita namakan table “subscribers”. Tabel “subscribers” terdiri dari kolom berikut:

  • subscriber_id (Number, Auto Increment, Primary Key)
  • subscriber_email (String)
  • registered_date (DateTime)

Sekarang kita akan mulai membuat tabel tersebut. Pertama buka file “functions.php”, lalu ketikan kode berikut.

$current_db_version = 1.0;
$installed_db_version = get_option('db_subscribers_version', 0);

if ($current_db_version > $installed_db_version) {
  app_create_subscribers_db();
  update_option('db_subscribers_version', $current_db_version);
}

function app_create_subscribers_db() {
  global $wpdb;

  // define query
  $query = array(
    "CREATE TABLE {$wpdb->prefix}subscribers (
      subscriber_id BIGINT NOT NULL AUTO_INCREMENT,
      subscriber_email VARCHAR(100) NOT NULL,
      registered_date DATETIME NOT NULL,
      PRIMARY KEY (subscriber_id)
    )"
  );

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

Maksud penggunaan object $wpdb->prefix adalah agar nama tabel sesuai dengan nama prefix tabel yang dipakai sebelumnya dan sesuai dengan ID website nya (jika pakai fitur Multisite) sehingga akan mudah ditemukan jika ingin mencari nya di Dashboard PHPMyAdmin.

Sampai sini table sudah berhasil dibuat, selanjutnya akan kita coba untuk melakukan CRUD (Cread Read Update Delete) ke tabel tersebut.

02. Insert atau Create Data
Untuk melakukan insert data, ketik kode berikut pada file “functions.php”.

function app_insert_data() {
  global $wpdb;
  $wpdb->insert($wpdb->prefix . 'subscribers', array(
    'subscriber_email' => 'fachririyanto@gmail.com',
    'registered_date' =>current_time('mysql')
  ));
}
app_insert_data();

Setelah kode tersebut dijalankan, akan menginsert data baru tersebut, seperti gambar berikut.

Kolom “subscriber_id” tercetak otomatis karena sebelumnya kita set AUTO_INCREMENT.

03. Read Data
Ketik kode berikut untuk membaca data dari table ‘subscribers’.

function app_get_data() {
  global $wpdb;
  $results = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}subscribers");
  return $results;
}

// implementasi
$posts = app_get_data();
foreach ($posts as $post) {
  echo $post->subscriber_email;
  echo '<br/>';
}

04. Update Data
Untuk update data, ketik kode berikut.

function app_update_data() {
  global $wpdb;
  $wpdb->update($wpdb->prefix . 'subscribers', array(
    // field to update
    'subscriber_email' => 'friyanto@gmail.com'
  ), array(
    // where clause
    'subscriber_email' => 'fachririyanto@gmail.com'
  ));
}
app_update_data();

Hasilnya sebagai berikut.

05. Delete Data
Terakhir kita akan melakukan delete data. Silahkan ketik kode berikut.

function app_delete_data() {
  global $wpdb;
  $wpdb->delete($wpdb->prefix . 'subscribers', array(
    'subscriber_email' => 'friyanto@gmail.com'
  ));
}
app_delete_data();

Jika dicek kembali ke Dashboard PHPMyAdmin, data subscriber telah kosong kembali. Sampai sini kita sudah berhasil melakukan CRUD ke dalam custom tabel WordPress.

Sekian dulu artikel kali ini, semoga bermanfaat.

Photo by Jan Antonin Kolar on Unsplash