Yanıtlar:
Sen yürütebileceği keyfi ile SQL ifadelerini wpdb :: sorgusu () Veri Tanımlama Bildirimleri, örneğin dahil,
function
create_index ()
{
global $wpdb ;
$sql = "CREATE INDEX my_index ON {$wpdb->prefix}my_table (my_column)" ;
$wpdb->query ($sql) ;
return ;
}
Not: Çünkü $wpdb->query()
yürütebileceği keyfi SQL kendisine iletmek ifadesi içeriyorsa, HERHANGİ kullanıcı girişi, ardından kullanmak gerektiğini wpdb) (hazırlamak :: SQL Enjeksiyon saldırılarına karşı korumak için.
Ancak bu şu soruyu gündeme getiriyor: eklentiye özgü tablolarınızı nasıl oluşturdunuz? "Manuel olarak" mı yoksa programlı olarak mı? Programlı olarak kullanmadınız $wpdb->query()
mı? Eğer bunu "manuel olarak" yaptıysanız, eklenti aktivasyonu üzerine gerçekten tabloları (ve dizinlerini) yaratmalısınız.
Özel tablolar oluşturma gibi şeyleri yapmak için eklenti aktivasyonuna (ve / veya devre dışı bırakma ve kaldırma) nasıl bağlanacağınıza ilişkin bu diğer WPSE sorusuna mükemmel cevaba bakın .
Bir PRIMARY KEY üstünde, dbDelta kullanarak, diğer sütunlar için bir dizin oluşturmak için KEY sözcüğünü ekleyebilirsiniz:
INDEX eş anlamlısı yerine KEY anahtar sözcüğünü kullanmalı ve en az bir KEY eklemelisiniz.
Çekirdekte schema.php örneği:
CREATE TABLE $wpdb->termmeta (
meta_id bigint(20) unsigned NOT NULL auto_increment,
term_id bigint(20) unsigned NOT NULL default '0',
meta_key varchar(255) default NULL,
meta_value longtext,
PRIMARY KEY (meta_id),
KEY term_id (term_id),
KEY meta_key (meta_key($max_index_length))
) $charset_collate;