Trong ngắn hạn, có - $wpdb
lớp. Xem Codex để biết thêm thông tin.
Bất cứ khi nào bạn tương tác với một bảng tùy chỉnh (hoặc bất kỳ bảng nào, thực sự), bạn nên trải qua $wpdb
- đặc biệt đảm bảo rằng bạn quen thuộc với prepare
phương pháp có thể giúp thoát khỏi các truy vấn và ngăn ngừa tiêm.
Bạn nên làm quen với nó, vì bạn nên sử dụng nó để tạo bảng. Trên hook cài đặt của bạn, bạn nên có một cái gì đó như:
$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);
Mã này thực sự được chạy bất cứ khi nào trình cắm được kích hoạt (tức là không chỉ cài đặt). Vì vậy, nó sẽ chạy khi ai đó tự động cập nhật trình cắm . Lưu ý: Nếu họ nâng cấp bằng cách thay thế trình cắm một cách thủ công - thì nó sẽ không - vì vậy bạn sẽ cần kích hoạt mã trên admin_init
khi trình cắm của bạn được nâng cấp (lưu số phiên bản trong bảng tùy chọn, kiểm tra phiên bản hiện tại) .
Bây giờ bạn thường không muốn CREATE TABLE
lệnh SQL chạy mỗi khi bạn cập nhật trình cắm - đây là nơi dBDelta()
xuất hiện.
Trước khi chạy lệnh trên - nó kiểm tra nếu bảng tồn tại. Hơn nữa, nó kiểm tra các loại cột. Vì vậy, nếu bảng không tồn tại, nó sẽ tạo ra nó, nếu có, nhưng một số loại cột đã thay đổi, nó sẽ cập nhật chúng và nếu một cột không tồn tại - nó sẽ thêm nó.
Thật không may - nếu bạn xóa một cột ở trên, nó sẽ không tự động xóa cột. Để loại bỏ các cột / bảng bạn cần phải cụ thể DROP
chúng (kiểm tra chúng tồn tại trước khi bạn làm).