Database Wordpress


Home / WordPress / Database Wordpress / Cấu trúc database WordPress – Kết nối database trong WordPress

Cấu trúc database WordPress – Kết nối database trong 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 postspages 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à:

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à:

wp_terms:

Bảng này lưu tất cả các taxonomy như là categorytag, các custom taxonomy. Một số hàm tương tác với bảng này là:

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à:

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à:

Một số hàm hay dùng liên quan đến user như:

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à:

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à:

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

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à:

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á :(.

Kết nối database trong WordPress

Khi kết nối tới bảng nào đó có sẵn trong WordPress thì ta có thể gọi trực tiếp như thế này: $wpdb->posts để kết nối tới bảng POSTS của WordPress.

 Lớp $wpdb là lớp dùng để tương tác với database trong wordpress ( nói chung là cái này wordpress cung cấp sẵn để mình dùng )

Những lưu ý khi kết nối tới cơ sở dữ liệu an toàn

Cũng chả khác gì các CMS khác, WordPress có một vài quy ước như sau:

  1. Bạn sẽ phải sử dụng $wpdb->prepare() để an toàn trong việc kết nối tới cơ sở dữ liệu, nó hoạt động giống như hàm sprintf nên mình thường dùng Sprintf để cho ngắn, ‘%s’ sẽ đại diện cho String, còn ‘%d’ là số, ‘%f’ là Float ( 1/2 ) chẳng hạn !
  2. Không bao giờ được sử dụng kết nối theo cách của bạn, phải sử dụng Class mặc định của WP, chỉ cần chạy $wpdb->query('Các lệnh SQL của bạn');
  3. Bạn muốn có một bảng riêng ? Okey, bạn gọi thêm hàm $wpdb->prefix để lấy cái prefix mà người dùng cài đặt trang, còn các bảng mặc định thì chỉ cần gọi trực tiếp, ví dụ $wpdb->posts để kết nối tới bảng POSTS hoặc $wpdb->prefix . 'BangCuaBan' để kết nối tới bảng của bạn !

Kết nối cơ bản trong WordPress

Tôi ví dụ bạn đang cần kết nối tới cơ sở dữ liệu trong một hàm nào đó, bạn có thể thêm vào trong hàm như sau:

Khi bạn muốn kết nối tới một bảng nào đó trong WordPress, bạn cần phải gọi Prefix kèm theo tên bảng, mọi bảng và mọi CMS đều cho phép người dùng thêm Prefix vào trong bảng dữ liệu để có thể cài được nhiều trang trong một bảng dữ liệu và để bảo mật, ví dụ:

Query cơ bản

Bạn sẽ gọi bất kỳ lệnh MySQL nào trong Query của WordPress, trả về là một Object, thông thường ta sẽ không chạy các lệnh select trong Query này:

Các bạn nên nhớ: Hàm prepare trong $wpdb là để tránh SQL Injection, nó chả khác gì hàm sprinf cả !

SELECT môt loạt ROW

Ta sẽ sử dụng $wpdb->get_results() để làm việc này ! Sau khi lấy được kết quả các bạn cần sử dụng hàm foreach để hiển thị kết quả vì nó trả về mảng Array() nhé !

SELECT một ROW

Bạn sẽ sử dụng một hàm khác trong Class WPDB của WordPress đó là get_row nhé, hàm này trả về một row trong cơ sở dữ liệu và trả về dạng Object:

Trong trường hợp bạn muốn đếm dữ liệu, hoặc tìm một row thoả mãn điều kiện trong bảng, bạn có thể sử dụng hàm get_row này nhé !

Ngoài ra, các bạn cũng có thể có thêm hàng ngàn cách tại Document của WordPress tại đây: https://codex.wordpress.org/Class_Reference/wpdb

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!

Tham khảo: Jamviet, Huykira

Mục Lục