ตารางฐานข้อมูลที่กำหนดเองใน WordPress: ตอนที่หนึ่ง
เผยแพร่แล้ว: 2022-06-27ในบทความชุดนี้ เราจะมาดูว่าเราสามารถสร้างตารางฐานข้อมูลแบบกำหนดเองใน WordPress ได้อย่างไรโดยมีหรือไม่มีปลั๊กอิน
ฉันควรใช้ตารางฐานข้อมูลแบบกำหนดเองเมื่อใดและเพราะเหตุใด
ในกรณีส่วนใหญ่ ตารางฐานข้อมูลเริ่มต้นของ WordPress ที่สร้างขึ้นเมื่อคุณติดตั้ง WordPress เป็นสิ่งที่คุณต้องการ ตารางเหล่านี้ประกอบด้วยข้อมูลทุกประเภท เช่น ประเภทของโพสต์และข้อมูลเมตาที่เกี่ยวข้อง เหตุใดคุณจึงต้องมีตารางฐานข้อมูลที่กำหนดเอง
สิ่งเหล่านี้จะเกิดขึ้นเมื่อคุณทำงานกับข้อมูลที่อยู่นอกเหนือข้อมูลปกติที่ใช้ใน WordPress ดังนั้น คุณอาจต้องการวางข้อมูลในตารางแบบกำหนดเองเมื่อคุณสร้างปลั๊กอินที่ต้องการเก็บข้อมูลในฐานข้อมูล นี่คือเหตุผลที่คุณจะเห็นว่าปลั๊กอินอย่าง WooCommerce มีตารางที่กำหนดเอง
นอกจากจะเป็นวิธีที่เป็นระเบียบในการจัดเก็บข้อมูลแล้ว การใช้ตารางแยกกันสามารถช่วยเพิ่มประสิทธิภาพได้ เนื่องจากข้อความค้นหาที่ใช้ไม่จำเป็นต้องค้นหาผ่านแถวและแถวของข้อมูลที่ไม่จำเป็น แต่สามารถนำไปยังตารางที่ 'ถูกต้อง' ซึ่งพวกเขาสามารถค้นหาข้อมูลที่ต้องการได้อย่างรวดเร็วและมีประสิทธิภาพ สิ่งนี้สำคัญมากเมื่อตารางฐานข้อมูลเริ่มเติบโต
การสร้างตารางฐานข้อมูลที่กำหนดเองของ WordPress
สมมติว่าเราต้องการสร้างปลั๊กอินง่ายๆ ที่จะช่วยเราจัดระเบียบรายชื่อนักเรียน ในความเป็นจริง งานง่ายๆ เช่นนี้หมายความว่าเราไม่จำเป็นต้องใช้ตารางที่กำหนดเองเลย ประเภทโพสต์ที่กำหนดเองจะทำงานได้อย่างสมบูรณ์แบบ
อย่างไรก็ตาม เพื่อประโยชน์ของตัวอย่างนี้ ข้อมูลประเภทนี้เหมาะสำหรับการสาธิตทฤษฎีเบื้องหลังตารางที่กำหนดเอง ดังนั้นเราจะดำเนินการกับมัน หมายเหตุ: เราจะถือว่าคุณมีความรู้พื้นฐานเกี่ยวกับ PHP และ mySQL
เริ่มต้น
ในการเริ่มต้น เราจะสร้างตารางฐานข้อมูลสำหรับ "นักเรียน" พร้อมคอลัมน์สำหรับชื่อ อายุ อีเมล และรหัสเฉพาะ เราจะทำสิ่งนี้โดยการสร้างปลั๊กอินที่กำหนดเองเพื่อให้งานสำเร็จลุล่วง
หมายเหตุ: หากคุณยังไม่คุ้นเคยกับวิธีสร้างปลั๊กอินแบบกำหนดเอง โปรดดูคู่มือของเราเกี่ยวกับการสร้างปลั๊กอิน WordPress แบบกำหนดเองของคุณ ก่อนดำเนินการต่อในบทช่วยสอนนี้!
สร้างไฟล์ปลั๊กอิน
เราจะสร้างโฟลเดอร์ชื่อ "my-custom-db-tables" ในโฟลเดอร์ปลั๊กอินและภายในโฟลเดอร์นั้น ไฟล์ชื่อ "my-custom-db-tables.php" ซึ่งมีโค้ดส่วนนี้:
<?php /* Plugin Name: My Custom DB Tables Description: A plugin for registering my students Author: Tassos Antoniou */ function create_the_custom_table() { // THE CODE } register_activation_hook(__FILE__, 'create_the_custom_table');
สิ่งที่เราทำคือแนะนำข้อมูลปลั๊กอินเพื่อให้ WordPress รู้จักปลั๊กอิน แน่นอน คุณจะต้องมีฟังก์ชันที่เพิ่มตาราง schema ลงในฐานข้อมูล ซึ่งจะเป็น create_the_custom_table()
ในกรณีส่วนใหญ่ คุณจะต้องเรียกใช้ฟังก์ชันนี้เพียงครั้งเดียวเท่านั้น โดยจะเป็นการดีเมื่อเปิดใช้งานปลั๊กอิน ดังนั้นเราจึงใช้ register_activation_hook() ที่ WordPress มีให้เพื่อให้แน่ใจว่าฟังก์ชันทำงานเมื่อมีการเปิดใช้งานปลั๊กอิน
กำหนดโครงสร้างของตาราง
แน่นอนว่าจะยังไม่มีอะไรเกิดขึ้นหากเราเปิดใช้งานปลั๊กอิน เนื่องจากฟังก์ชันยังว่างอยู่ ไปกรอกรหัสนี้เพื่อสร้างตารางจริง ๆ :
<?php /* Plugin Name: My Custom DB Tables Description: A plugin for registering my students Author: Tassos Antoniou */ function create_the_custom_table() { global $wpdb; $charset_collate = $wpdb->get_charset_collate(); $table_name = $wpdb->prefix . 'students'; $sql = "CREATE TABLE " . $table_name . " ( id int(11) NOT NULL AUTO_INCREMENT, name tinytext NOT NULL, email VARCHAR(100) NOT NULL, age int(11) NULL, PRIMARY KEY (id) ) $charset_collate;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } register_activation_hook(__FILE__, 'create_the_custom_table');
ตอนนี้ขอหยุดสักครู่เพื่อตรวจสอบสิ่งที่เราได้ทำกับโค้ดนี้
ก่อนอื่น เราคว้าคำนำหน้าตารางโดยใช้คลาส $wpdb
WordPress ระดับโลกที่สื่อสารกับฐานข้อมูล เป็นคำนำหน้าเดียวกับที่กำหนดไว้ใน wp-config.php
และควรใช้ในตารางที่กำหนดเองเช่นกัน นอกจากนี้เรายังจะสืบทอดการเรียงปัจจุบันโดยบันทึกลงในตัวแปร $charset_collate
เพื่อตั้งค่าในภายหลังในแบบสอบถาม
ขั้นตอนต่อไปของเราคือการกำหนดโครงสร้างของตารางในแบบสอบถาม sql เพื่อให้ได้สคีมาที่ต้องการ ดังที่เราได้กล่าวไปแล้ว คอลัมน์ ID อีเมล ชื่อและอายุที่มีประเภทข้อมูลที่เหมาะสมสำหรับแต่ละรายการ
$sql = "CREATE TABLE " . $table_name . " ( id int(11) NOT NULL AUTO_INCREMENT, name tinytext NOT NULL, email VARCHAR(100) NOT NULL, age int(11) NULL, PRIMARY KEY (id) ) $charset_collate;";
ต่อไป เรา require_once
ไฟล์ upgrade.php
นั่นเป็นสิ่งจำเป็นเพื่อใช้ฟังก์ชัน dbDelta
ที่มาทันที เมื่ออยู่บน WordPress เพื่อสร้างตารางฐานข้อมูล (หรืออัปเดตตารางที่มีอยู่เป็นโครงสร้างใหม่) เราจำเป็นต้องใช้ฟังก์ชัน dbDelta
หมายเหตุ: แทนที่จะเรียกใช้คิวรี SQL โดยตรง ฟังก์ชันนี้จะใช้เพื่อแก้ไขฐานข้อมูลโดยการสร้างหรืออัปเดตตารางตามคำสั่ง SQL ที่ระบุ การใช้พารามิเตอร์ $queries
เราสามารถส่งโครงร่างของตารางที่เรากำหนดเองได้
ตอนนี้ หากคุณเปิดใช้งานปลั๊กอินและตรวจสอบฐานข้อมูลของคุณ คุณจะเห็นว่าตารางถูกสร้างขึ้นแล้ว
ตอนนี้ หากคุณอ่านภายใน wp-admin/includes/upgrade.php
คุณจะสังเกตเห็นว่า dbDelta()
ใช้ preg_match()
เพื่อดึงข้อมูลจากคำสั่ง SQL ด้วยเหตุนี้ คุณจึงต้องระมัดระวังในการแก้ไข เอกสารอย่างเป็นทางการให้ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ แต่เราได้เน้นประเด็นสำคัญด้านล่าง:
- คุณต้องใส่ แต่ละฟิลด์ในบรรทัดของตัวเอง ในคำสั่ง SQL ของคุณ
- คุณต้องมี ช่องว่างสองช่อง ระหว่างคำว่า PRIMARY KEY และคำจำกัดความของคีย์หลักของคุณ
- คุณต้องใช้คีย์เวิร์ด KEY แทนคำพ้องความหมาย INDEX และคุณต้องใส่ KEY อย่างน้อยหนึ่ง รายการ
- ต้องตามด้วย KEY เว้นวรรค ตามด้วยชื่อคีย์ ตามด้วยเว้นวรรค จากนั้นเปิดวงเล็บที่มีชื่อฟิลด์ ตามด้วยวงเล็บปิด
- คีย์อื่นที่ไม่ใช่คีย์หลัก ควรตั้งชื่อ ตัวอย่างเช่น:
... PRIMARY KEY (id), KEY age (age) ...
- คุณต้อง ไม่ใช้ เครื่องหมายอะพอสทรอฟีหรือ backticks ใดๆ กับชื่อฟิลด์
- ประเภทฟิลด์ต้องเป็น ตัวพิมพ์เล็ก ทั้งหมด
- คีย์เวิร์ด SQL เช่น CREATE TABLE และ UPDATE ต้องเป็น ตัวพิมพ์ใหญ่
- คุณต้อง ระบุความยาว ของฟิลด์ทั้งหมดที่ยอมรับพารามิเตอร์ความยาว เช่น int(11) ของคอลัมน์ id เป็นต้น
คุณอาจสังเกตเห็นด้วยว่าเราไม่ได้ตรวจสอบว่ามีตารางอยู่แล้วในฐานข้อมูลหรือไม่ นั่นเป็นเพราะ dbDelta
ทำเพื่อเรา ไม่จำเป็นต้องกังวลเกี่ยวกับการอัปเดตแบบสอบถาม ไม่เพียงแต่จะสร้างตาราง แต่จะตรวจสอบว่ามีตารางที่มีชื่อเดียวกันอยู่แล้วหรือไม่ และถ้าเป็นเช่นนั้น จะไม่สร้างตาราง จะอัปเดตโครงสร้างตารางที่มีอยู่หากจำเป็นเท่านั้น
เราจะกล่าวถึงเรื่องนี้มากขึ้นในบทความต่อๆ ไปในซีรีส์นี้
ฟังก์ชันและความสามารถในการปรับขนาด
ดังนั้นจะเกิดอะไรขึ้นเมื่อปิดใช้งานหรือถอนการติดตั้งปลั๊กอิน ตามหลักการแล้ว ควรมีตัวเลือกผู้ดูแลระบบในการเลือกว่าจะลบตารางนี้ออกจากฐานข้อมูลหรือไม่และเมื่อปลั๊กอินถูกปิดใช้งานหรือถูกลบ
นอกจากนี้ คุณจะพบว่าไม่ช้าก็เร็วคุณจำเป็นต้องเปลี่ยนปลั๊กอิน (เพื่อปรับปรุงหรือแก้ไขข้อบกพร่อง) บางทีคุณอาจต้องการเปลี่ยนวิธีการจัดเก็บข้อมูล เพิ่มคอลัมน์ลงในตาราง หรือเปลี่ยนการออกแบบ ซึ่งหมายความว่าคุณควรสร้างปลั๊กอินในลักษณะที่ทำให้มั่นใจว่าสามารถปรับขนาดได้มากที่สุดและสามารถปรับให้เข้ากับการเปลี่ยนแปลงใดๆ ที่เกิดขึ้นได้
ในบทความถัดไปของซีรีส์นี้ เราจะเจาะลึกหัวข้อเหล่านี้และแสดงให้คุณเห็นว่าคุณจะบรรลุเป้าหมายนี้ได้อย่างไร กลับมาตรวจสอบเร็ว ๆ นี้!