Tabel Database Kustom Di WordPress: Bagian Satu
Diterbitkan: 2022-06-27Dalam rangkaian artikel ini, kita akan melihat bagaimana kita bisa membuat tabel database kustom di WordPress dengan atau tanpa plugin.
Kapan dan Mengapa Saya Harus Menggunakan Tabel Database Kustom?
Dalam kebanyakan kasus, tabel database WordPress default yang dibuat saat Anda menginstal WordPress adalah semua yang Anda perlukan. Tabel ini berisi segala macam informasi seperti jenis posting dan meta data yang terkait. Jadi, mengapa Anda memerlukan tabel database khusus?
Ini muncul dengan sendirinya saat Anda bekerja dengan data yang berada di luar informasi normal yang digunakan di WordPress. Jadi, Anda mungkin ingin menempatkan data dalam tabel kustom saat Anda membuat plugin yang perlu menyimpan informasi dalam database. Inilah alasan mengapa Anda akan melihat bahwa plugin seperti WooCommerce memiliki tabel khusus mereka sendiri.
Selain sebagai cara yang lebih rapi untuk menyimpan informasi, menggunakan tabel terpisah dapat membantu meningkatkan kinerja karena kueri apa pun yang digunakan tidak perlu menelusuri baris demi baris data yang tidak perlu. Sebaliknya, mereka dapat diarahkan ke tabel 'kanan' di mana mereka dapat menemukan info yang diperlukan dengan lebih cepat dan efisien. Ini menjadi sangat penting ketika tabel database mulai tumbuh.
Membuat Tabel Database Kustom WordPress
Katakanlah kita ingin membuat plugin sederhana yang akan membantu kita mengatur daftar siswa. Pada kenyataannya, tugas sederhana seperti ini berarti kita tidak perlu menggunakan tabel khusus sama sekali. Jenis posting khusus akan melakukan pekerjaan dengan sempurna.
Namun, demi contoh ini, jenis data ini sangat cocok untuk mendemonstrasikan teori di balik tabel khusus sehingga kami akan menjalankannya. Catatan: Kami akan menganggap Anda memiliki pengetahuan dasar PHP dan MySQL.
Mulai
Untuk memulai, kita akan membuat tabel database 'siswa' dengan kolom untuk nama, usia, email, dan ID unik. Kami akan melakukan ini dengan membuat plugin khusus untuk menyelesaikan pekerjaan.
CATATAN: Jika Anda belum terbiasa dengan cara membuat plugin kustom, lihat panduan kami tentang membuat plugin WordPress kustom Anda sendiri sebelum melanjutkan tutorial ini!
Buat File Plugin
Kami akan membuat folder bernama "my-custom-db-tables" di folder plugins dan di dalamnya, sebuah file bernama "my-custom-db-tables.php" yang berisi potongan kode ini:
<?php /* Plugin Name: My Custom DB Tables Description: A plugin for registering my students Author: Tassos Antoniou */ function create_the_custom_table() { // THE CODE } register_activation_hook(__FILE__, 'create_the_custom_table');
Apa yang kami lakukan adalah memperkenalkan informasi plugin sehingga WordPress akan mengenali plugin tersebut. Jelas, Anda juga memerlukan fungsi yang menambahkan skema tabel ke database yang akan menjadi fungsi create_the_custom_table()
.
Dalam kebanyakan kasus, Anda hanya perlu menjalankan fungsi ini satu kali, idealnya saat plugin diaktifkan. Oleh karena itu, kami menggunakan register_activation_hook() yang disediakan WordPress untuk memastikan fungsi berjalan setelah aktivasi plugin.
Tentukan Struktur Tabel
Tentu saja, tidak akan terjadi apa-apa jika kita mengaktifkan plugin, karena fungsinya masih kosong. Jadi mari kita pergi dan mengisinya dengan kode ini, untuk benar-benar membuat tabel:
<?php /* Plugin Name: My Custom DB Tables Description: A plugin for registering my students Author: Tassos Antoniou */ function create_the_custom_table() { global $wpdb; $charset_collate = $wpdb->get_charset_collate(); $table_name = $wpdb->prefix . 'students'; $sql = "CREATE TABLE " . $table_name . " ( id int(11) NOT NULL AUTO_INCREMENT, name tinytext NOT NULL, email VARCHAR(100) NOT NULL, age int(11) NULL, PRIMARY KEY (id) ) $charset_collate;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } register_activation_hook(__FILE__, 'create_the_custom_table');
Sekarang mari kita berhenti sejenak untuk memeriksa apa yang telah kita lakukan dengan sedikit kode ini.

Pertama-tama, kita ambil awalan tabel menggunakan kelas WordPress $wpdb
global yang berkomunikasi dengan database. Ini adalah awalan yang sama yang didefinisikan dalam wp-config.php
dan merupakan praktik yang baik untuk menggunakannya di tabel kustom Anda juga. Kami juga akan mewarisi susunan saat ini dengan menyimpannya di variabel $charset_collate
untuk mengaturnya nanti dalam kueri.
Langkah kita selanjutnya adalah mendefinisikan struktur tabel dalam kueri sql untuk mendapatkan skema yang diinginkan dengan benar. Seperti yang kami katakan, kolom id, email, nama, dan usia dengan tipe data yang tepat untuk masing-masing kolom.
$sql = "CREATE TABLE " . $table_name . " ( id int(11) NOT NULL AUTO_INCREMENT, name tinytext NOT NULL, email VARCHAR(100) NOT NULL, age int(11) NULL, PRIMARY KEY (id) ) $charset_collate;";
Selanjutnya, kita upgrade.php
require_once
Itu wajib untuk menggunakan fungsi dbDelta
yang datang setelahnya. Saat di WordPress, untuk membuat tabel database (atau memperbarui tabel yang ada ke struktur baru), kita perlu menggunakan fungsi dbDelta.
CATATAN: Alih-alih langsung mengeksekusi kueri SQL, fungsi ini digunakan untuk memodifikasi database dengan membuat atau memperbarui tabel, berdasarkan pernyataan SQL yang ditentukan. Dengan menggunakan parameter $queries
, kita dapat meneruskan skema tabel kustom kita.
Sekarang jika Anda mengaktifkan plugin dan memeriksa database Anda, Anda akan melihat tabel telah dibuat.

Sekarang, jika Anda membaca di dalam wp-admin/includes/upgrade.php
, Anda akan melihat bahwa dbDelta()
menggunakan fungsi preg_match()
untuk mengambil informasi dari pernyataan SQL. Karena itu, Anda perlu berhati-hati saat mengeditnya. Dokumentasi resmi memberikan informasi lebih lanjut tentang ini, tetapi kami telah menyoroti poin-poin utama di bawah ini:
- Anda harus meletakkan setiap bidang pada barisnya sendiri dalam pernyataan SQL Anda.

- Anda harus memiliki dua spasi antara kata PRIMARY KEY dan definisi dari primary key Anda.
- Anda harus menggunakan kata kunci KEY daripada sinonimnya INDEX dan Anda harus menyertakan setidaknya satu KEY.
- KUNCI harus diikuti oleh satu spasi , lalu nama kunci, lalu spasi, lalu kurung buka dengan nama bidang, lalu kurung tutup.
- KUNCI selain utama, harus diberi nama. Sebagai contoh:
... PRIMARY KEY (id), KEY age (age) ...
- Anda tidak boleh menggunakan apostrof atau backtick di sekitar nama bidang.
- Jenis bidang harus huruf kecil semua.
- Kata kunci SQL, seperti CREATE TABLE dan UPDATE, harus huruf besar .
- Anda harus menentukan panjang semua bidang yang menerima parameter panjang, seperti int(11) kolom id misalnya.
Anda mungkin juga memperhatikan bahwa kami tidak memeriksa apakah tabel sudah ada di database. Itu karena dbDelta
melakukannya untuk kita. Tidak perlu khawatir tentang pertanyaan pembaruan. Tidak hanya itu akan membuat tabel, tetapi akan memeriksa apakah tabel dengan nama yang sama sudah ada, dan jika demikian, itu tidak akan membuat tabel. Ini hanya akan memperbarui struktur tabel yang ada jika diperlukan.
Kami akan membahas ini lebih lanjut di artikel mendatang dalam seri ini.
Fungsionalitas dan Skalabilitas
Jadi, apa yang harus terjadi ketika plugin dinonaktifkan atau dihapus? Idealnya, harus ada opsi admin untuk memilih apakah akan menghapus tabel ini atau tidak dari database jika dan ketika plugin dinonaktifkan atau dihapus.
Selanjutnya, Anda hampir pasti akan menemukan cepat atau lambat bahwa Anda perlu mengubah plugin Anda (untuk memperbaikinya atau memperbaiki bug). Mungkin Anda ingin mengubah cara menyimpan data, menambahkan kolom ke tabel, atau mengubah desainnya. Itu berarti Anda harus membangun plugin dengan cara yang memastikannya skalabel mungkin dan dapat beradaptasi dengan perubahan apa pun yang dibuat.
Dalam artikel kami berikutnya dari seri ini, kami akan menggali topik ini dan menunjukkan kepada Anda bagaimana Anda dapat mencapainya. Periksa kembali segera!