Table Post của WordPress hoạt động như thế nào?

WordPress cơ bản, sử dụng ở mức phổ thông thì chỉ cần làm 1 tuần là xong. Vì vậy, KINGDOM NVHAI sẽ không nói về những cách sử dụng WordPress phổ thông mà sẽ đi sâu vào phần lập trình như hàm, luồng xử lý, database… Bài viết này chúng ta sẽ tìm hiểu table hoạt động nhiều nhất WordPress, đó là table posts.

Tại sao phải xem bài viết này?

Khi cần sao lưu database.
Khi cần giảm dung lượng database.
Khi cần chuyển WordPress sang Framework khác.

Đây là table wp_posts của WordPress 4.9.8

Table Post của WordPress hoạt động như thế nào?

Để có thể xem cách hoạt động của table wp_posts, hãy cài đặt WordPress. Trong menu bài viết, WordPress sẽ có bài viết cho sẵn là Hello world! Table của bạn sẽ như thế này.

Table Post của WordPress hoạt động như thế nào?

Table Post của WordPress hoạt động như thế nào?

Như mọi người thấy, bài viết Hello world! có post_status là publish (Xuất bản). Kế đến là Sample Page cũng có trạng thái là publish.

Kết luận: khi tạo page hay post, chúng đều được tạo trong table wp_post và lấy ra các dữ liệu có post_status là publish.

Kế đến, chúng ta thử làm 2 việc: sửa bài viết cũ và tạo bài viết mới.

Vào bài viết Hello world! có sẵn, sửa nội dung lại để xem table posts có gì.

Table Post của WordPress hoạt động như thế nào?

Table Post của WordPress hoạt động như thế nào?

Table posts đã tạo thêm 2 dòng mới chứa posts_content là những gì bạn vừa sửa. Đáng lưu ý là post_status là inherit (kế thừa).

Tiếp theo, chúng ta thử tạo bài viết mới. Điểm đáng lưu ý là khi tạo bài viết, nút Update chuyển thành nút Publish.

Table Post của WordPress hoạt động như thế nào?

Table Post của WordPress hoạt động như thế nào?

Chúng ta thấy dữ liệu tạo thêm 2 dòng cho bài viết mới. Cột post_status ghi là publish.

Kết luận: publish là bài viết khi được tạo ra lần đầu tiên. Những lần update kế tiếp, WordPress sẽ tạo ra 1 dòng mới kế thừa từ publish gốc. Đó là lý do WordPress có điểm yếu là database dễ bị phình to sau một thời gian sử dụng.

Xem thêm: tất cả các loại Post Status

Đến đây, sẽ có 2 câu hỏi lớn hiện ra trong đầu:
_ Làm sao để lấy page/post với bản inherit mới nhất?
_ Làm sao để xóa những bản inherit cũ?

Hãy để ý cột quan trọng là post_parent.
post_parent là id của bài viết mà nó kế thừa.
Tiếp theo, để ý cột post_type có 3 loại là page, post và revision (sửa đổi)

Table Post của WordPress hoạt động như thế nào?

Table Post của WordPress hoạt động như thế nào?

Chúng ta dự đoán câu SQL:
1 Lấy tất cả id có post_type là ‘page’ và post_status là ‘publish’
2 Với mỗi id, tạo vòng lặp lấy inherit cuối cùng có post_parent bằng id.
_ Kết quả là chúng ta có mảng chứa tất cả inherit cuối cùng của mỗi publish.

Câu SQL lấy tất cả id của bài viết publish.

SELECT `ID` FROM `wp_posts`
WHERE `post_status` LIKE ‘publish’
AND `post_type` LIKE ‘post’

Câu SQL lấy inherit cuối cùng của bài viết publish đó. Thêm biến vào kết quả của `post_parent` để tạo vòng lặp

SELECT * FROM `wp_posts`
WHERE `post_status` LIKE ‘inherit’
AND `post_parent` = 1
ORDER BY `ID` DESC LIMIT 1

Câu SQL xóa bớt các bản inherit cũ để giảm tải dung lượng. Trước đó, bạn nên tạo nhiều bản inherit để thử nghiệm.

DELETE FROM `wp_posts`
WHERE `post_status` LIKE ‘inherit’
AND `post_parent` = 1
ORDER BY `ID` ASC LIMIT 1

Nghĩa là bạn xóa dòng đầu tiên trong số các dòng inherit của bài viết này. Hãy mở bài viết của bạn lên xem có vấn đề gì không. Kết quả là không. Bản cập nhật mới nhất vẫn hiện ra ngoài trang web.

Table Post của WordPress hoạt động như thế nào?

Như vậy, chúng ta đã biết cách table wp_post hoạt động và làm sao để lấy đúng dữ liệu mình cần. Bài viết này rất có ích nếu mọi người muốn giảm dung lượng WordPress, sao lưu dữ liệu hay chuyển sang framework mới.

Leave a Comment