Thực hành query dữ liệu database wordpress sử dụng wpdb

Thực hành query dữ liệu database wordpress sử dụng wpdb

Ngày 21 - 10 - 2019 - Tại chuyên mục: Wordpress - Lượt xem: 6129

Hôm trước mình có giới thiệu cách truy vấn sql vào database wordpress để get dữ liệu, nhưng vẫn thấy chưa thấm lắm =)). Nên hôm nay mình và các bạn cùng nhau thực hành query dữ liệu database wordpress để hiểu hơn về cách query dữ liệu database wordpress

Mình sẽ lần lượt đưa ra các ví dụ yêu cầu, rồi sau đó sẽ giải quyết các vấn đề đó nha.

Thực hành query dữ liệu database wordpress sử dụng wpdb

1. Truy vấn sql database wordpress get 10 bài viết mới nhất có hình đại diện

Phân tích: Như chúng ta đã biết bài viết được lưu trong bảng wp_posts, hình đại diện của bài viết lại lưu trong bảng wp_postmeta, nhưng ngặt ngèo ở chổ nó chỉ lưu id của hình dại diện chứ không phải là url của hình.

Vì thế để lấy ra được hình đại diện của bài post chúng ta phải query như sau: Từ wp_posts join bảng wp_postmeta để lấy ID của hình đại diện rồi tiếp tục join ngược lại bảng wp_posts để lấy url hình ảnh (Vì hình ảnh của wp được lưu trong bảng wp_posts). 

Cụ thể chúng ta sẽ có đoạn code như sau:

2. Truy vấn sql database wordpress get list danh mục với số lượng bài viết

Phân tích: Danh mục bài viết được lưu ở bảng wp_terms, nhưng số lượng bài viết của từng danh mục thì lại lưu ở bảng wp_term_taxonomy với yêu cầu này chúng ta từ bảng wp_terms join bảng wp_term_taxonomy sau đó get các thành phần tương ứng:

Cụ thể code như sau:

3. Truy vấn sql database wordpress get danh sách thành viết bình luận nhiều trong tháng

Đây là đoạn code được nhiều người cần để list top thành viên bình luận nhiều. Code này mình lấy top 10 thành viên bình luận nhiều nhất.

4. Get top thành viên viết bài nhiều nhất trong tháng

Bạn nào làm tổng kết báo cáo website chắc cần đoạn code này. Code get 10 thành viên viết bài nhiều nhất trong tháng

Tổng kết:

Bài hôm nay mình đã giới thiệu nhiều hơn về query dữ liệu từ database của wordpress. Một khi bạn đã thành thạo trong việc sử dụng class $wpdb thì wordpress không còn là vấn đề của bạn. Hy vọng bài viết này sẽ giúp ích cho bạn!

Bạn nào có cần đoạn code nào liên quan đến cách get dữ liệu wordpress mà chưa rõ thì comment cho mình biết mình sẽ giúp!. Các bạn có thể đọc qua bài viết này để biết các câu sql hay cần dùng cho wordpress

Chúc các bạn học wordpress thành công!

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...)

10
  • Huỳnh Thiện Trímất nữa ngày giờ đã tìm ngay vấn đề hay quá anh ơi .

    Thích Trả lời 4 năm trước

  • nguyen thientôi có một nhu cầu bạn có thể giúp được không: tôi muốn truy suất 1 dòng trong data table khi nhập id của dòng

    Thích Trả lời 2 năm trước

  • Thick QuotaTruy vấn sql database wordpress get 10 bài viết mới nhất có hình đại diện Code query của Huy có vẻ hơi cồng kềnh quá, dùng query sau dễ hiểu và gọn nhẹ hơn: $sql = "SELECT post.ID as ID, post.post_author as author, post.post_modified as date, post.post_title as title, post.post_name as slug, post.guid as image FROM $table post LEFT JOIN $tablemeta meta ON post.ID = meta.post_id WHERE meta.meta_key = '_thumbnail_id' AND post.post_type = 'post' AND post.post_status = 'publish' ORDER BY post.post_modified DESC LIMIT %d OFFSET %d";

    Thích Trả lời 2 năm trước

    • Huy KiraBác chạy câu query của bác chưa :))). post.guid as image <= có thấy gì sai chổ này ko :D

      Thích Trả lời 2 năm trước

      • Thick Quotachời, nó là alias khi gọi ra thôi mà. Display ra thay vì guid --> image

        Thích Trả lời 2 năm trước

      • Thick Quotaleft join 1 lần 2 bảng là đủ dữ liệu rồi, sau đó dùng mệnh đề where lọc theo điều kiện thôi

        Thích Trả lời 2 năm trước

    • Thick Quotathiếu thêm điều kiện rồi AND post.post_mime_type = 'image/png' cảm ơn Huy đã check nhé

      Thích Trả lời 2 năm trước

      • Huy KiraỦa bác chạy thử code của bác chưa vậy :D. Thêm cái này vào có tác dụng gì nhỉ. Ví dụ là ảnh gif, jpeg, jpg là ko lấy được hả... mà sao chỉ chấp nhận png. p/s: Mà cái sai ở đây ko phải chổ đó, sai là cái 'post' nó đang làm bài viết chả liên quan gì đến hình đại diện hết. Bác phải join thêm 1 bản posts nữa thì mới lấy được link hình đại diện. Bác nên chảy thử code của mình!

        Thích Trả lời 2 năm trước

  • Thick Quota1. Truy vấn sql database wordpress get tất cả bài viết có hình đại diện sau cái left join thứ 1 điều kiện gộp bảng ON có AND `thumbnail`.`meta_key` = '_thumbnail_id' --> cái này là điều kiện để dưới sau mệnh đề where mới đúng phải không? Huy thử xem lại nhé, mình để dưới đó lọc ra mới đúng, còn để ngay sau ON không có ý nghĩa. Mình thử chạy rồi, Huy check xem nhé, mình theo code Huy bị lọt lưới vài row, bỏ limit nhé. SELECT * FROM $table as post LEFT JOIN $tablemeta as thumbnail ON post.ID = thumbnail.post_id LEFT JOIN $table imagethumb ON imagethumb.ID = thumbnail.meta_value WHERE thumbnail.meta_key = '_thumbnail_id' AND post.post_type = 'post' AND post.post_status = 'publish'

    Thích Trả lời 2 năm trước

AVT