Truy vấn dữ liệu từ database

WordPress hỗ trợ đối tượng $wpdb giúp chúng ta kết nối với database và truy vấn dữ liệu một cách dễ dàng. Đối tượng $wpdb là một biến toàn cục có sẵn trong WordPress, chúng ta chỉ cần sử dụng nó để truy vấn dữ liệu không cần khai báo.

Giả sử database của chúng ta có bảng wp_posts (trong đó wp_ được gọi là prefix của bảng  posts). Ví dụ minh họa bên dưới, là lấy tất cả các bài post từ bảng wp_posts và in ra title của mỗi bài post.

<?php
  $query = "SELECT * FROM $wpdb->posts WHERE post_type='post'";
  $rows = $wpdb->get_results($query);
  foreach($rows as $post)
  {
      echo '<h4>'.$post->post_title.'</h4>';
  }
?>

Giải thích:

  • Trong câu truy vấn chúng ta dùng $wpdb->posts, WordPress sẽ tự động hiểu là bảng wp_posts trong database ($wpdb-> sẽ thay cho phần prefix của bảng dữ liệu cần truy vấn)
  • Dùng hàm $wpdb->get_results() để lấy về một mãng các posts (hàm có 2 đối số: query và kiểu dữ liệu trả về, nhưng ở ví dụ trên chỉ sử dụng một đối số là câu query mà thôi)

Nếu bạn muốn lấy dữ liệu từ một bảng customize nào đó mà không thuộc về những bảng dữ liệu mặc định của WordPress, bạn làm như sau.

Giả sử truy vấn mã sản phẩm (product_id) và tên sản phẩm (product_name) từ bảng products trong database, code như sau

<?php
  $query = "SELECT product_id, product_name FROM products";
  $rows = $wpdb->get_results($query);
  foreach($rows as $product)
  {
      echo 'Id: '.$product->product_id.', Name: '.$product->product_name.'<br/>';
  }
?>

Trường hợp bạn chỉ muốn truy vấn 1 dòng dữ liệu thôi bạn có thể dùng $wpdb->get_row() thay cho $wpdb->get_results(), code minh họa:

<?php
  $query = "SELECT * FROM $wpdb->posts WHERE id=3";
  $row = $wpdb->get_row($query);
  echo '<h4>'.$row->post_title.'</h4>';
?>

Vui code cùng Góc Kinh Nghiệm! :roll:


4 comments

  1. Cho em hỏi là đoạn code đấy thì viết vào chỗ nào ak? Qủa thật e chưa biết gì mong a chỉ giúp! Thank a nhiều!

    1. Đây là code và không phải file config, nên bạn để bất kỳ file nào bạn đang code, nơi bạn mong muốn lấy dữ liệu lên để dùng.

Leave a Reply

Your email address will not be published. Required fields are marked *