Ý nghĩa và kết nối database trong WordPress

(Kienthucmeovat.com) – Vài mẹo kết nối database trong WordPress giúp các bạn nhanh chóng hiểu được cách query trong WordPress, cực kì đơn giản và dễ sử dụng hơn rất nhiều so với các CMS khác !

Xin chào các bạn, WordPress là một trong những CMS cực kỳ dễ dùng, ngay cả với kết nối cơ sở dữ liệutrong WordPress cũng vậy, các bạn sẽ thấy nó dễ hơn rất nhiều so với các mã nguồn mở khác như PHPBB hoặc Joomla hay Drupal ! Bài viết sau đây sẽ giới thiệu vài điểm cơ bản kết nối database trong WordPress giúp các bạn nhanh chóng tiếp cận WordPress.

Ý nghĩa và kết nối database trong WordPress

Query trong SQL

Danh sách bảng cơ sở dữ liệu trong WordPress

Trong bảng cơ sở dữ liệu mặc định, ta có các bảng sau:

  • _commentmeta : Nơi lưu trữ các thông tin liên quan tới comment của khách như Meta …
  • _comments : Nơi lưu trữ nội dung comment
  • _links : Đã bỏ trong thời gian gần đây, tuy nhiên nó vẫn có, dùng để lưu các đường link bạn cho thêm vào
  • _options : Nơi lưu trữ cài đặt của toàn trang !
  • _postmeta : Nơi lưu trữ các thông tin Meta của Bài đăng
  • _posts : Nơi chứa nội dung bài đăng, như tựa đề, nội dung, tác giả, ngày tháng
  • _termmeta : Nơi lưu trữ các thông tin Meta của Term như Tag Meta …
  • _terms : Category và Tag và các loại Custom Taxonomy sẽ có ở đây
  • _term_relationships : Chứa các mối quan hệ cha con giữa các Taxonomy
  • _term_taxonomy : Taxonomy
  • _usermeta : Chứa thông tin thêm của User như đường link Facebook …
  • _users : Lưu trữ mọi thông tin của User như tên, mật khẩu, tên hiển thị
  • Ngoài ra các bạn cũng có thể thêm thoải mái các bảng dữ liệu !

Trong đó, 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.

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:

function _need_connect_database() {
global $wpdb;
}

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

function _need_connect_database() {
global $wpdb;
$prefix = $wpdb->prefix;
$userDatabase = $prefix. 'OtherUsersTable';
}

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:

global $wpdb;
$results = $wpdb->query( $wpdb->prepare('Truncate %s', $wpdb->users) );

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é !

global $wpdb;
$results = $wpdb->get_results( sprintf('select * from %s where post_title = '%s'', $wpdb->posts, 'Chào mừng bạn đến với WordPress') );
foreach ( $results as $value ){
Echo $value->ID;
}

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:

global $wpdb;
$result = $wpdb->get_row( sprint('select count(*) As countauthor from %s where post_author = %d', $wpdb->posts, 5) );
echo $result->countauthor;

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

Bất kỳ vướng mắc nào về việc kết nối database trong WordPress hãy comment bên dưới, mình sẽ hỗ trợ nhiệt tình !

Cảm ơn và chúc các bạn ngày cuối tuần vui vẻ !

Theo jamviet

You may also like...