Kısacası, evet - $wpdb
sınıf. Daha fazla bilgi için Kodeks'e bakın .
Özel bir tabloyla (veya gerçekten herhangi bir tabloyla) etkileşime girdiğinizde $wpdb
, özellikle de prepare
sorgulardan kaçmaya ve enjeksiyonları önlemeye yardımcı olabilecek yöntemi bildiğinizden emin olun .
Tabloyu oluşturmak için kullanmanız gerektiği için zaten aşina olmalısınız. Kurulum kancanızda şöyle bir şey olmalıdır:
$charset_collate = '';
if ( ! empty($wpdb->charset) )
$charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
if ( ! empty($wpdb->collate) )
$charset_collate .= " COLLATE $wpdb->collate";
//Create custom table
$sql_custom_table ="CREATE TABLE {$wpdb->prefix}my_table (
id bigint(20) unsigned NOT NULL auto_increment,
column_a varchar(255) default NULL,
column_b varchar(255) default NULL,
PRIMARY KEY (id)
) $charset_collate; ";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql_custom_table);
Bu kod aslında eklenti her etkinleştirildiğinde çalıştırılır (yani sadece kurulu değil). Böylece, birisi eklentiyi otomatik olarak güncellediğinde çalışır . Not: Eklentiyi manuel olarak değiştirerek yükseltirlerse - o zaman olmaz - bu nedenle admin_init
eklentiniz yükseltildiğinde yukarıdaki kodu tetiklemeniz gerekir (seçenekler tablosunda sürüm numarasını saklayın, mevcut sürüme karşı kontrol edin) .
Artık CREATE TABLE
eklentiyi her güncellediğinizde normalde SQL komutunun çalışmasını istemezsiniz - işte bu noktada dBDelta()
devreye girer.
Yukarıdaki komutu çalıştırmadan önce - tablonun mevcut olup olmadığını kontrol eder. Dahası, sütun türlerini kontrol eder. Bu nedenle, tablo yoksa, oluşturur, eğer yaparsa, ancak bazı sütun türleri değiştiğinde tablolar güncellenir ve bir sütun yoksa - ekler.
Ne yazık ki - yukarıdan bir sütunu kaldırırsanız, sütun otomatik olarak kaldırılmaz. Sütunları / tabloları kaldırmak için özel olarak DROP
bunlara ihtiyacınız vardır (sizden önce var olduklarını kontrol edin).