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:
$query = 'select foo from %table% left join %meta% on %table%.ID = %meta%.meta_id ... ';
$change = array (
'%table%' => $wpdb->prefix . '_mytable',
'%meta%' => $wpdb->prefix . '_mytablemeta'
);
$sql = str_replace( array_keys( $change ), array_values( $change ), $query );
$results = $wpdb->get_results( $sql );
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.