Ở bài trước mình đã giới thiệu cho các bạn cấu trúc database wordpress và cũng đã biết database wordpress mặc định có tổng cộng là 12 bảng. Vậy chúng ta có thể tạo thêm vài bảng nữa được không?
- Hướng dẫn thêm, sửa, xóa trong cơ sở dữ liệu wordpress
- Hướng dẫn truy vấn dữ liệu cơ sở dữ liệu wordpress, truy vấn SQL trong wordpress
- Đâm, đục, phá database wordpress xem có gì vui ?
- Thực hiện truy vấn cơ sở dữ liệu wordpress sử dụng wpdb
- Hướng dẫn xây dựng trang đăng ký trong WordPress
Cơ sở dữ liệu mặc định của wordpress có 12 bảng
Tạo bảng mới trong cơ sở dữ liệu wordpress
Ví dụ yêu cầu. Tạo một bảng mới trong cơ sở dữ liệu wordpress để lưu thông tin liên hệ của khách hàng. Thông tin liên hệ khách hàng bao gồm. Họ và tên, email, số điện thoại, địa chỉ, tiêu đề và nội dung liên hệ .
Với yêu cầu phía trên mình sẽ tạo một bảng mới có tên là. wp_liên hệ. Và trong bảng này sẽ có các trường tương ứng. ID, tên, email, điện thoại, địa chỉ, tiêu đề, nội dung, ngày tháng
Để tạo bảng mới trong cơ sở dữ liệu wordpress, các bạn chèn đoạn mã sau vào tệp functions. php of theme are used nhé
PHP1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Giải thích mã tạo cơ sở dữ liệu mới trong wordpress
Chúng ta tạo một hàm có tên là hk_CreatDatabaseContacts [bạn có thể đặt tên hàm tùy thích nhé]. Sau đó móc hàm gắn vào action ‘init‘ để mỗi khi tải trang web là nó tự động chạy hàm đó. Sau đây là một số thành phần có trong chức năng tạo cơ sở dữ liệu
- Dòng 3. global $wpdb => Lớp $wpdb là lớp dùng để tương tác với cơ sở dữ liệu trong wordpress [ nói chung là cái này wordpress cung cấp sẵn cho mình dùng 😀 ]
- Dòng 4. Nhận bộ ký tự của cơ sở dữ liệu sau đó gán vào biến $charsetCollate, để tạo bảng mới cùng bộ ký tự tổng hợp của cơ sở dữ liệu
- Dòng 5. Set a variable $contactTable as name of the table to create. $wpdb->prefix => Lấy tiền tố của cơ sở dữ liệu, mặt định của cơ sở dữ liệu là wp_
- Từ dòng 6 đến dòng 15. Tạo biến $createContactTable là câu sql kiểm tra trong cơ sở dữ liệu có bảng nào chưa, nếu chưa có thì tiến hành tạo bảng mới. Với trường id là khóa chính, tự động tăng
- Dòng 15. Bao gồm tệp hệ thống của wp, tệp này chứa nhiều thư viện giúp bạn tạo cơ sở dữ liệu. [Bạn cứ cho vào ko cần quan tâm nhé]
- Dòng 16. Sử dụng hàm dbDelta với biến $createContactTable được khai báo ở trên
View results
Sau khi chèn đoạn có trên, bạn ra ngoài trang web và tiến hành tải lại trang và vào phpmyadmin xem kết quả, nếu bảng wp_contacts xuất hiện có nghĩa đoạn mã trên đã chạy
Bảng wp_contacs đã được tạo trong cơ sở dữ liệu của dự án
Đây là phần thiết kế của bảng vừa tạo
Tạo bảng mới trong cơ sở dữ liệu wordpress với từ khóa ngoại
Các bạn chèn đoạn mã sau vào hàm tệp. php of theme are used nhé
PHP1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Ở đây user_id là khóa ngoại, Liên kết bảng wp_contacts với bảng wp_users nha
mysql1
Khóa NGOẠI TỆ [user_id] Tham chiếu THAM KHẢO {$wpdb- >prefix}users[ID] ON DELETE CASCADE ON UPDATE CASCADE
Đoạn mã trên cho phép tạo khóa ngoại trừ là user_id đồng thời bị ràng buộc khi xóa người dùng A, thì những bản ghi trong bảng wp_contacs có chứa user_id của người dùng A cũng bị xóa theo luôn nhé
Delete a table in database wordpress
Để xóa một bảng trong cơ sở dữ liệu wordpress, bạn sử dụng đoạn mã sau khi chèn vào chức năng tệp. php of theme are used
PHP1
2
3
4
Một số lưu ý
Khi các bạn tạo bảng mới trong database wordpress thì nên chạy 1 lần, tránh hàm tạo database vào action init. Vì action init mỗi lần load web nó sẽ chạy, vì thế action init chạy rất nhiều lần dễ gây lỗi và làm chậm website
Các bạn chỉ nên chạy khi active theme hoặc active plugin
Tạo cơ sở dữ liệu khi chủ đề đang hoạt động
PHP1
add_action[ 'after_switch_theme', 'hk_CreatDatabaseContacts' ];
Tạo cơ sở dữ liệu khi kích hoạt plugin
PHP1
2
3
4
chức năng detect_plugin_activation[ $plugin, $network_activation ] {
// Đoạn mã tạo cơ sở dữ liệu
}
add_action[ 'activated_plugin', 'detect_plugin_activation', 10, 2 ];
Tóm tắt
Bài viết này mình đã hướng dẫn các bạn cách tạo bảng mới trong cơ sở dữ liệu của worpdress. Nhìn chung thì cũng khá đơn giản, chỉ cần copy đoạn code của mình chỉnh sửa các thông số cho phù hợp là oke. Ở bài viết tiếp theo mình sẽ hướng dẫn các bạn truy vấn, thêm, xóa, sửa dữ liệu trong bảng của cơ sở dữ liệu wordress bằng cậu lệnh truy vấn mysql