ฉันได้สร้างตารางเพิ่มเติมบางส่วนสำหรับปลั๊กอินที่ฉันกำลังพัฒนาและจำเป็นต้องเพิ่มดัชนีในตารางเหล่านี้
WordPress มีวิธีทำอะไร?
การใช้dbDelta()
ดูเหมือนจะไม่ทำงานและฉันไม่เห็นข้อผิดพลาดในบันทึก
ฉันได้สร้างตารางเพิ่มเติมบางส่วนสำหรับปลั๊กอินที่ฉันกำลังพัฒนาและจำเป็นต้องเพิ่มดัชนีในตารางเหล่านี้
WordPress มีวิธีทำอะไร?
การใช้dbDelta()
ดูเหมือนจะไม่ทำงานและฉันไม่เห็นข้อผิดพลาดในบันทึก
คำตอบ:
คุณสามารถดำเนินการคำสั่ง SQL โดยพลการด้วยwpdb :: query ()รวมถึงคำจำกัดความของข้อมูลเช่น
function
create_index ()
{
global $wpdb ;
$sql = "CREATE INDEX my_index ON {$wpdb->prefix}my_table (my_column)" ;
$wpdb->query ($sql) ;
return ;
}
หมายเหตุ:เนื่องจาก$wpdb->query()
สามารถเรียกใช้งานSQL แบบกำหนดเองได้หากคำสั่งที่คุณส่งไปนั้นมีอินพุตผู้ใช้ใด ๆดังนั้นคุณควรใช้wpdb :: prepare ()เพื่อป้องกันการโจมตี SQL Injection
แต่สิ่งนี้ทำให้เกิดคำถาม: คุณสร้างตารางเฉพาะปลั๊กอินได้อย่างไร "ด้วยตนเอง" หรือโดยทางโปรแกรม หากโดยทางโปรแกรมคุณไม่ได้ใช้$wpdb->query()
หรือไม่ หากคุณทำมัน "ด้วยตนเอง" แล้วคุณควรสร้างตาราง (และดัชนีของพวกเขา) เมื่อเปิดใช้งานปลั๊กอิน
ดูคำตอบที่ยอดเยี่ยมสำหรับคำถาม WPSE อื่น ๆสำหรับวิธีการเชื่อมต่อกับการเปิดใช้งานปลั๊กอิน (และ / หรือปิดใช้งานและถอนการติดตั้ง) เพื่อทำสิ่งต่าง ๆ เช่นสร้างตารางส่วนตัว
การใช้ dbDelta ด้านบนของคีย์หลักคุณสามารถรวมคำว่า KEY เพื่อสร้างดัชนีสำหรับคอลัมน์อื่น ๆ :
คุณต้องใช้คีย์คำ KEY แทนคำพ้องความหมาย INDEX และคุณต้องมีคีย์อย่างน้อยหนึ่งรายการ
ตัวอย่างจาก schema.php ในแกน:
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;
แหล่งที่มา: codex - การสร้างตารางด้วยปลั๊กอิน