Tutorial WordPress: membuat tabel database MySQL, dan menyisipkan konten menggunakan WordPress Class wpdb:
Dalam tutorial ini, kita akan belajar:
- Cara membuat tabel database baru di WordPress
- Cara memasukkan data ke tabel database yang baru dibuat ini
Anda dapat menggunakan proses ini untuk merekam informasi tentang audiens Anda atau bahkan menggunakannya untuk sebuah plugin, dll.
Pertama, dan dengan PHP, kode berikut melakukan kueri MySQL dan membuat tabel database baru jika belum ada, dan dari tutorial ini, nama tabelnya adalah my_table yang tentu saja Anda bisa ubah ke yang lain:
global $wpdb;
// creates my_table in database if not exists
$table = $wpdb->prefix . "my_table";
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS $table (
`id` mediumint(9) NOT NULL AUTO_INCREMENT,
`name` text NOT NULL,
UNIQUE (`id`)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
Selanjutnya, kami membuat formulir HTML sederhana yang berisi 2 input dasar, satu untuk teks agar pemirsa mengetik apa yang kami minta, dan satu lagi untuk mengirimkan formulir:
<form action="#v_form" method="post" id="v_form">
<label for="visitor_name"><h3>Hello there! What is your name?</h3></label>
<input type="text" name="visitor_name" id="visitor_name" />
<input type="submit" name="submit_form" value="submit" />
</form>
Anda mungkin telah memperhatikan bahwa tindakan tersebut tidak lain adalah hash, karena kami tidak bekerja dengan file PHP di sini dan hal-hal rumit ..
Langkah berikut adalah yang terakhir yang mendeteksi apa yang telah diketik oleh pemirsa, dan memasukkannya ke tabel database menggunakan $wpdb-> insert function class WordPress. Jika nama tidak disetel (dibiarkan kosong oleh pemirsa), tidak akan ada sisipan, hanya pemberitahuan bagi pengguna untuk mengisi bidang itu:
if ( isset( $_POST["submit_form"] ) && $_POST["visitor_name"] != "" ) {
$table = $wpdb->prefix."my_table";
$name = strip_tags($_POST["visitor_name"], "");
$wpdb->insert(
$table,
array(
'name' => $name
)
);
$html = "<p>Your name <strong>$name</strong> was successfully recorded. Thanks!!</p>";
}
// if the form is submitted but the name is empty
if ( isset( $_POST["submit_form"] ) && $_POST["visitor_name"] == "" )
$html .= "<p>You need to fill the required fields.</p>";
Kode lengkap
Sekarang untuk membuatnya lebih mudah digunakan, kita akan membuat kode pendek cepat untuk digunakan, jadi tambahkan kode berikut dalam file functions.php Anda, pastikan Anda bekerja pada tema anak WordPress:
function elh_insert_into_db() {
global $wpdb;
// creates my_table in database if not exists
$table = $wpdb->prefix . "my_table";
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS $table (
`id` mediumint(9) NOT NULL AUTO_INCREMENT,
`name` text NOT NULL,
UNIQUE (`id`)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
// starts output buffering
ob_start();
?>
<form action="#v_form" method="post" id="v_form">
<label for="visitor_name"><h3>Hello there! What is your name?</h3></label>
<input type="text" name="visitor_name" id="visitor_name" />
<input type="submit" name="submit_form" value="submit" />
</form>
<?php
$html = ob_get_clean();
// does the inserting, in case the form is filled and submitted
if ( isset( $_POST["submit_form"] ) && $_POST["visitor_name"] != "" ) {
$table = $wpdb->prefix."my_table";
$name = strip_tags($_POST["visitor_name"], "");
$wpdb->insert(
$table,
array(
'name' => $name
)
);
$html = "<p>Your name <strong>$name</strong> was successfully recorded. Thanks!!</p>";
}
// if the form is submitted but the name is empty
if ( isset( $_POST["submit_form"] ) && $_POST["visitor_name"] == "" )
$html .= "<p>You need to fill the required fields.</p>";
// outputs everything
return $html;
}
// adds a shortcode you can use: [insert-into-db]
add_shortcode('elh-db-insert', 'elh_insert_into_db');
Referensi :