Lập trình WordPress

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

Điểm bài viết
[Tổng cộng: 0 Trung bình: 0]

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

5 1 đánh giá
Đánh giá bài viết