Chào mừng các bạn đã quay trở lại với chủ đề database của WordPress. Hôm nay, tôi sẽ hướng dẫn cho các bạn cách truy vấn dữ liệu từ database của WordPress, nhưng không sử dụng WP_Query của WordPress :D. Để hiểu bài viết này, bạn cần có kiến thức cơ bản về MySQL. Nếu bạn chưa có kiến thức này, hãy tìm hiểu ngay hôm nay nhé 😀.
Hướng dẫn truy vấn dữ liệu database WordPress
1. Lấy kết quả
Truy vấn “get results” được sử dụng khi bạn muốn lấy nhiều bản ghi từ một bảng. Ví dụ, bạn có đoạn mã sau đây:
$results = $wpdb->get_results( "SELECT * FROM wp_posts WHERE post_type = 'post' LIMIT 10" );
Mã trên sẽ trả về một mảng chứa 10 bài viết từ bảng wp_posts, có post_type là “post”.
Bạn đang xem: Hướng dẫn query dữ liệu database WordPress: Truy vấn SQL trong WordPress
2. Lấy một bản ghi
Truy vấn “get row” được sử dụng khi bạn muốn lấy một bản ghi duy nhất. Ví dụ, bạn muốn lấy thông tin của một bài viết có ID là 5, bạn có thể sử dụng đoạn mã sau:
$row = $wpdb->get_row( "SELECT * FROM wp_posts WHERE ID = 5" );
Mã trên sẽ trả về một mảng chứa thông tin của bài viết có ID là 5.
3. Lấy một giá trị
Truy vấn “get var” được sử dụng khi bạn muốn lấy một giá trị nào đó từ database. Ví dụ, bạn muốn lấy số lượng bài viết của một người dùng có ID là 1, bạn có thể sử dụng đoạn mã sau:
$number = $wpdb->get_var( "SELECT COUNT(*) FROM wp_posts WHERE post_author = 1" );
Mã trên sẽ lấy số lượng bài viết của người dùng có ID là 1 và gán vào biến $number.
Ngoài 3 cách truy vấn dữ liệu trên, WordPress còn cung cấp một số phương pháp truy vấn khác, nhưng tôi chưa tìm hiểu đến để có thể sử dụng. Nếu bạn cần, bạn có thể tự tìm hiểu thêm.
Hướng dẫn kết hợp (join) bảng và truy vấn dữ liệu database WordPress
1. Kết hợp một bảng và truy vấn dữ liệu
Ví dụ: Lấy thông tin của một bài viết kèm theo tên tác giả của bài viết đó.
Phân tích: Trong database của WordPress, bài viết được lưu trong bảng wp_posts, nhưng không có cột để lưu tên tác giả, chỉ có cột để lưu ID của tác giả là “post_author”. Tên tác giả được lưu trong bảng wp_users. Vì vậy, để thực hiện yêu cầu này, chúng ta cần kết hợp (join) bảng wp_users vào bảng wp_posts để lấy thông tin về tác giả như sau:
$results = $wpdb->get_results( "SELECT wp_posts.ID, wp_posts.post_title, wp_posts.post_date, wp_users.display_name
FROM wp_posts
JOIN wp_users ON wp_posts.post_author = wp_users.ID LIMIT 10" );
Xem thêm : Những lưu ý thiết kế layout website trong CSS bạn nên biết
Mã trên sẽ lấy ra 10 bản ghi từ bảng wp_posts. Mỗi bản ghi sẽ bao gồm các thông tin sau:
- ID của bài viết
- Tiêu đề bài viết
- Ngày viết bài
- Tên tác giả của bài viết
Bạn có thể lấy thêm các thông tin khác bằng cách thêm vào câu truy vấn SELECT.
2. Kết hợp nhiều bảng và truy vấn dữ liệu
Ví dụ: Lấy thông tin của một bài viết kèm theo tên và mô tả của tác giả.
Phân tích: Tương tự như ví dụ trước, nhưng trong yêu cầu này, chúng ta cần lấy thêm mô tả của tác giả từ bảng wp_usermeta. Để thực hiện yêu cầu này, chúng ta sẽ tiếp tục kết hợp thêm một bảng nữa vào câu truy vấn.
$results = $wpdb->get_results( "SELECT wp_posts.ID, wp_posts.post_title, wp_posts.post_date, wp_users.display_name, wp_usermeta.meta_value
FROM wp_posts
JOIN wp_users ON wp_posts.post_author = wp_users.ID
JOIN wp_usermeta ON wp_users.ID = wp_usermeta.user_id
WHERE wp_usermeta.meta_key = 'description'
LIMIT 10" );
Xem thêm : Những lưu ý thiết kế layout website trong CSS bạn nên biết
Mã trên sẽ lấy ra 10 bản ghi từ bảng wp_posts. Mỗi bản ghi sẽ bao gồm các thông tin sau:
- ID của bài viết
- Tiêu đề bài viết
- Ngày viết bài
- Tên tác giả của bài viết
- Mô tả của tác giả
Tóm lại:
Bài viết hôm nay đã hướng dẫn cho bạn cách truy vấn dữ liệu trong database của WordPress. Phương pháp truy vấn này thường được áp dụng khi bạn tạo ra các bảng mới trong database của WordPress mà không có hàm nào hỗ trợ lấy dữ liệu.
Ưu điểm:
- Dữ liệu trả về nhanh chóng, giúp tăng tốc độ load trang web và tăng hiệu suất cho website.
- Có thể lấy dữ liệu từ bất kỳ bảng nào trong database.
- Không phụ thuộc vào các hàm của WordPress.
- Câu truy vấn dễ hiểu, giống với câu truy vấn trong PHP thuần.
Nhược điểm:
- Viết mã truy vấn tốn thời gian.
- Yêu cầu kiến thức cơ bản về MySQL và cấu trúc database của WordPress.
- Dễ bị tấn công SQL injection nếu không có kiến thức bảo mật tốt.
Để tìm hiểu thêm về việc truy vấn dữ liệu trong database của WordPress, bạn có thể tham khảo tài liệu tại đây. Chúc bạn học WordPress hiệu quả!
Nguồn: https://laptrinhc.edu.vn
Danh mục: Web