Maaf jika pertanyaan ini sepele. Saya baru mulai mengembangkan plugin di WordPress.
Dalam semua tutorial saya menemukan ini: saat membuat tabel kustom, $wpdb->prefix
digunakan.
Contoh:
$table_name = $wpdb->prefix . "liveshoutbox";
Pertanyaan saya:
Apakah wajib untuk digunakan
$wpdb->prefix
? Apa yang terjadi jika saya tidak menggunakan awalan untuk tabel khusus saya?
sumber
Pertimbangkan yang berikut ini:
Plugin Anda digunakan pada jaringan wordpress, yang menggunakan berbagai awalan tabel untuk setiap situs. Plugin Anda dapat berjalan secara bersamaan di 836 situs yang berbeda, semuanya dalam database yang sama.
wp_385677_liveshoutbox
adalah nama tabel yang masuk akal.Plugin Anda diinstal oleh pengguna yang memiliki konsep keamanan, dan telah mengubah awalan tabel untuk memblokir bot yang mencoba menyuntikkan
select * from wp_users
ke dalam sistem. Bahkan jika mereka menemukan kerentanan baru, itu tidak akan berhasil.Mengambil jalan pintas seperti nama tabel hardcoding adalah cara yang baik untuk menjalankan dan menjalankan suatu produk, tetapi bukan cara yang baik untuk merilisnya. dalam waktu yang sangat singkat plugin akan memiliki tumpukan komentar "tidak berfungsi" di dalamnya, dalam kasus terburuk Anda akan merusak situs orang lain.
Jika saya memiliki pertanyaan yang kompleks dan saya tidak ingin berurusan dengan kesulitan menulis
'select foo from ' . $wpdb->prefix . '_mytable left join ' . $wpdb->prefix . '_mytablemeta on ' . $wpdb->prefix . '.ID = ' . $wpdb->prefix . '.meta_id ....
Anda dapat menggunakan replacers. Sebagai contoh:Wordpress terus berubah. Apa yang "bekerja" hari ini mungkin tidak berfungsi besok. Itu sebabnya ada fungsi API. Pengembang Wordpress akan memastikan perilaku API publik konsisten (atau mereka akan menurunkan fungsi). Jika Anda mulai menggunakan panggilan metode internal karena 'lebih cepat seperti itu' biasanya akan kembali menggigit Anda. Ada beberapa pintasan sejati dalam perangkat lunak - mereka hanya memindahkan pekerjaan yang diperlukan dari sekarang ke nanti, dan seperti kartu kredit Anda "nanti" biasanya harganya lebih mahal.
sumber
$wpdb->prefix . "users"
akan menghasilkan tabel yang tidak valid dalam instalasi multisite. Itu karena itu akan menambahkan awalan db ke tabel. Namun, multisite hanya menggunakan satu tabel pengguna, karena semua pengguna adalah pengguna jaringan. Jadi, jika kueri melibatkan tabel wp_users atau wp_usermeta, Anda harus menggunakan masing$wpdb->users
-$wpdb->usermeta
masing.