Xoá tất cả post type bằng MySQL trong WordPress

Rate this post

Nếu bạn có ít bài viết, việc xoá có thể thực hiện đơn giản thông qua giao diện quản trị. Tuy vậy, trong trường hợp bạn có hàng nghìn, thậm chí hàng chục nghìn mục và muốn xoá, hãy thử câu lệnh MySQL sau.

Giả sử, post type của mình có slug là codetot_news.

Lưu ý thay prefix SQL wp_ nếu bạn đang sử dụng table prefix khác.

Lần lượt chạy lệnh sau,

DELETE FROM wp_posts WHERE post_type='codetot_news';
DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT id FROM wp_posts);
DELETE FROM wp_term_relationships WHERE object_id NOT IN (SELECT id FROM wp_posts)

Tiếp đến, nếu bạn có taxonomy có liên quan tới post type này, ta cần reset bộ đếm của mỗi term.

UPDATE wp_term_taxonomy tt
    SET count =
    (SELECT count(p.ID) FROM  wp_term_relationships tr
    LEFT JOIN wp_posts p
    ON (p.ID = tr.object_id AND p.post_type = 'codetot_news' AND p.post_status = 'publish')
    WHERE tr.term_taxonomy_id = tt.term_taxonomy_id
);

Hãy thử làm xem sao nhé.

Viết một bình luận


Chuyên gia về Web
Bạn muốn làm việc với dịch vụ website do chúng tôi triển khai?
Gọi tư vấn 0982.90.4343
Chuyên gia về Web
Bài viết liên quan

07/04/2024

PHP: Format date dd/mm/yyyy và so sánh với Date hiện tại
Một vấn đề hay gặp trong quá trình xử lý PHP datetime là tình huống format date từ định dạng...

02/01/2024

Fix lỗi npm không thể cài các package devDependencies
Khi cài đặt dự án,  có lúc bạn sẽ cài mãi cũng không đủ các package npm, đặc biệt là...
Gọi file PHP trong WordPress

19/09/2023

Cài đặt và sử dụng WP-CLI trên môi trường Linux
Trên một số môi trường Hosting có thể cung cấp SSH hoặc Terminal access, song không có sẵn WP-CLI để...
Import database MySQL lớn trên môi trường Docker

06/08/2023

Import database MySQL lớn trên môi trường Docker
Mình sử dụng EasyPanel để quản lý các Docker và build môi trường app. Nay gặp tình huống phải import...