Đâm, đục, phá database wordpress xem có gì vui ?
Như các bạn cũng đã biết wordpress được viết bằng php với cơ sở dữ liệu là mysql. Chúng ta thường đi tìm hiểu sâu về phẩn code của wordpress như lập trình theme wordpress, lập trình plugin... Hoặc một số phần tùy biến custom field, custom post type... Mà không quan tâm nhiều đến phần thiết kế cơ sở dữ liệu database của wordpress.
Để hiểu trõ hơn về database wordpress được thiết kế như thế nào, gồm có những table nào, chức năng của từng table, cũng như cách để can thiệp, tùy biến database wordpress... Hôm nay mình sẽ giới thiệu cho các bạn cấu trúc database wordpress.
Cấu trúc database wordpress:
Ở thời điểm mình viết bài này wordpress đang có phiên bản mới nhất là 5.1.1. Cấu trúc database wordpress gồm có 12 bảng như hình bên dưới!
p/s: Đối với mutil site thì cấu trúc database sẽ khác nhé. Đây là cấu trúc của một site wordpress thông thường!
Sau đây là chức năng tương ứng của từng bảng trong database wordpesss:
Mình sẽ sắp xếp theo thứ tự quan trọng đối với yêu cầu chức năng của từng bảng nhé! (ý kiến của mình)
wp_posts:
Bảng này chưa toàn bộ bài viết của posts, pages cũng như các custom post type. Lưu ý hình ảnh up lên media của wordpress cũng được lưu ở bảng này. Mỗi ảnh tương ứng với mỗi trường nhé!. Một số hàm hay dùng để tương tác với bảng này là:
- get_post() => Dùng để get dữ liệu từ bảng posts.
- Các vòng lặp lấy bài viết trong wordpress
- wp_insert_post() => Dùng để chèn một bài viết vào bảng post
- wp_update_post() => Dùng để cập nhật dữ liệu của một bài viết theo ID
- wp_delete_post() => Dùng để xóa một bài viết nào đó theo ID
wp_postmeta:
Bảng này lưu các trường mở rộng (meta) của bảng wp_posts. Đây là lưu các custom field của post. Các thông tin của hình ảnh cũng được luư ở bảng này như các kích thước crop... bảng này liên kết với bảng wp_posts. (Một post sẽ có nhiều post_meta). Bảng này là một trong như bảng bị phìn to khi dữ liệu website nhiều lên. Một số hàm để tương tác với dữ liệu của bảng này là:
- get_post_meta() => Hàm get dữ liệu meta theo post_id và meta_key.
- add_post_meta() => Hàm thêm một giá trị meta
- update_post_meta() => Hàm cập nhật giá trị của meta theo post_id và meta_key
- delete_post_meta() => Hàm xóa giá trị của meta
wp_terms:
Bảng này lưu tất cả các taxonomy như là category, tag, các custom taxonomy. Một số hàm tương tác với bảng này là:
- get_term() => Hàm get dữ liệu của một term theo ID
- wp_insert_term() => Hàm thêm một term taxonomy mới
- wp_update_term() => Hàm cập nhật giá trị của một term taxonomy
- wp_delete_term() => Hàm xóa một term taxonomy
wp_term_taxonomy:
Ở bảng wp_terms phía trên các bạn sẽ thấy, tất cả các chuyên mục cũng như từ khóa đều được lưu chung ở bảng đó. Vậy làm sao để phân biệt được đâu là chuyên mục, đâu là từ khóa? Vì vậy bảng wp_term_taxonomy được sinh ra để giải quyết vấn đề đó.
wp_termmeta:
Bảng này chứa các trường mở rộng của bảng wp_terms, Cũng giống như post_meta bảng này cũng được lưu dưới dạng key và value. Một số hàm dùng để tương tác với bảng này là:
- get_term_meta() => Get dữ liệu của term meta theo term_id
- add_term_meta() => Thêm một dữ liệu term meta mới
- update_term_meta() => Cập nhật dữ liệu của một term meta
- delete_term_meta() => Xóa dữ liệu của một term meta
wp_term_relationships:
Trong wordpress một bài viết có thể thuộc nhiều chuyên mục và một chuyên mục cũng có thể chứa nhiều bài viết. Mà chuyên mục ở đây là wp_terms còn bài viết ở đây là wp_posts. Dễ dàng nhận thấy 2 bảng đó quan hệ (nhiều nhiều) với nhau. Vì thế bảng wp_term_relationships là bảng trung gian giữa 2 bảng này.
Một số hàm tương tác với dữ liệu bảng này là:
- wp_set_object_terms() => Hàm add một post thuộc một hoặc nhiều chuyên mục nào đó.
wp_users:
Bảng này chứa danh sách thành viên của website. Tất cả user đều được lưa bảng này ko kể level cao thấp. Một số hàm để tương tác với dữ liệu bảng này là:
- get_users() => Lấy một hoặc nhiểu user theo điều kiện
- wp_create_user() => Tạo user mới
- wp_update_user() => Cập nhật lại thông tin user
- wp_delete_user() => Xóa thành viên
Một số hàm hay dùng liên quan đến user như:
- wp_get_current_user() => Get thông tin của user đang đăng nhập
- get_current_user_id() => Get thông user id đang đăng nhập
- is_user_logged_in() => Kiểm tra user đã đăng nhập hay chưa (Hàm điều kiện)
wp_usermeta:
Bảng này chứa phần mở rộng của bảng wp_users. Dữ liệu của thông thành viên website chỉ gói gọn trong bảng wp_user. Ví dụ muốn thêm một số thông tin cho user ví dụ như: Địa chỉ, số điện thoại... thì chúng tả phải dùng bàng wp_usermeta để lưu chúng ở đó. Một số hàm để tương tác với bảng wp_usermeta là:
- get_user_meta() => Get dữ liệu user meta
- add_user_meta() => Thêm dữ liệu user meta
- update_user_meta() => Cập nhật dữ liệu của một trường user meta
- delete_user_meta() => Xóa dữ liệu của một trường user meta
wp_comments:
Bảng này chứa tất cả các bình luận của khách comment vào wesbite bạn. Một số hàm tương tác với dữ liệu webiste này là:
- get_comments() => Hàm lấy một hoặc nhiều comment
- wp_insert_comment() => Hàm thêm 1 comment mới
- wp_update_comment() => Hàm cập nhật dữ liệu của một comment
- wp_delete_comment() => Hàm xóa một comment nào đó
wp_commentmeta:
Tương tự như những bảng meta khác. Bảng commentmeta là bảng mở trộng của wp_comments. Một số hàm tương tác với dữ liệu bảng wp_commentmeta
- get_comment_meta() => Lấy dữ liệu meta của một comment
- add_comment_meta() => Thêm một dữ liệu meta cho một comment nào đó
- update_comment_meta() => Cập nhật dữ liệu meta của một comment nào đó
- delete_comment_meta() => Xóa một dữ liệu meta của một comment nào đó
wp_options:
Bảng này chứa các thông tin của webiste như: Tiêu đè, mô tả, site url, đường dẫn theme, múi giờ...Các cài đặt cùa webiste. Bảng này thường được tận dụng để làm theme options. Một số hàm dùng để tương tác với dữ liệu của bàng này là:
- get_option() => Lấy dữ liệu của một options nào đó
- add_option() => Thêm dữ liệu option mới
- update_option() => Cập nhật giá trị của một option nào đó
- delete_option() => Xóa dữ liệu của một option nào đó
wp_links:
Bảng cuối cùng :)) Mừng quá. Nói thật bảng này mình không biết nó sinh ra để làm nhiệm vụ gì luôn :)). Với viết tới đây buồn ngủ quá :(. Vậy bạn nào biết công dụng của bảng đó thì comment cho mình biết với nha!
Tóm lại:
Bài viết hôm này mình đã giới thiệu cho các bạn biết cấu trúc của database wordpress. Nhìn chung nếu các bạn bỏ thời gian ra ngâm cứu một tí sẽ thấy nó khá dễ. Chủ yếu là hệ thống các bảng chính đi kèm với nó là các bảng phụ (meta). Với cách thiết kế như thế này sẽ giúp cho website dễ dàng tùy biến thêm trường.
Nếu các bạn tìm hiểu sâu wordpress thì database của nó chắc chắn các bạn phải nắm để dễ dàng tùy chỉnh. Bài viết hôm nay khá dài nên mình sẽ chỉ giới thiệu tới đây. Bài viết sau mình sẽ hướng dẫn cho các bạn tạo thêm một bảng mới vào database wordpress và cũng như cách get, thêm, sửa, xóa dữ liệu trong database wordpress.
Chúc các bạn học wordpress thành công! Chào thân ái và quyết thắng!
Võ Quang Huy (Huy Kira)
Đam mê hóa học, ưng thi vào trường kinh tế... Đậu vào trường Sư phạm, quyết tâm đi dạy... Ra trường đi làm designer, tự học frontend, chuyển qua làm PHP, được công ty đào tạo laravel... Và hiện tại đang code react native(2015) => Fullstack ... ?? tối về viết blog... (Còn tiếp...)