Hoàng Web

Thiết Kế Website WordPress

  • Kho giao diện
  • Dịch Vụ
    • Thiết kế web giá rẻ
    • Thiết kế website WordPress
    • Hosting Miễn Phí 100GB
    • Tích hợp thanh toán MoMo, ViettelPay, Vietcombank, MB..
    • Tối ưu Google PageSpeed
    • Sửa lỗi nâng cấp website
    • Viết plugin WordPress
    • Code Tool theo yêu cầu
  • Bảng giá
  • Quy trình làm việc
  • Giới thiệu
  • Liên Lạc
Trang chủ » Wordpress » Mẹo xóa 10,000 bài viết với phpMyAdmin – WordPress

Mẹo xóa 10,000 bài viết với phpMyAdmin – WordPress

Thứ Sáu, 11/01/2019 by Hoàng Quách

  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Bạn có thể xóa thủ công rất nhiều bài viết trong WordPress? Đây không phải là nhiệm vụ dễ dàng, vì trang web của bạn có thể đang chạy trên một máy chủ web được chia sẻ với tài nguyên hạn chế và việc xóa hàng ngàn các bài đăng cũ có thể là một nhiệm vụ khá mệt mỏi.

Xóa dưới 1000 bài viết ?

Nếu bạn có ý định xóa dưới 1000 bài viết, thì có thể sử dụng plugin Bulk Delete.

Bulk Delete là một plugin ưordPress có thể được sử dụng để xóa hàng loạt bài đăng từ các danh mục, thẻ hoặc danh mục tùy chỉnh được chọn. Plugin này cũng có thể xóa tất cả các bản nháp, bài viết hoặc trang được lên lịch.

Plugin này là giải pháp cho bạn nếu bạn đang xóa tối đa 1.000 bài đăng vì sử dụng chức năng mặc định của wordpress để xóa từng bài viết một.

foreach ($posts as $post) {
	wp_delete_post($post->ID, $force_delete);
}

Xóa hàng ngàn bài viết

Bạn không thể sử dụng plugin hay cách thủ công để xóa hàng nhìn bài viết trong một thời gian ngắn, plugin rất có thể gây lỗi do vượt quá thời gian sử lý PHP. Nếu bạn đang sử dụng share hosting thì có một cách khác là sử dụng phpMyAdmin.

Do cấu trúc bảng WordPress có liên kết chặt chẽ với nhau, bạn không thể xóa trực tiếp vào bảng wp_posts & kết quả là vẫn còn nhiều dữ liệu thừa trong CSDL.

Xem chi tiết dữ liệu được liên kết trong WordPress ở dưới đây:

  1. Revisions: bạn sẽ tìm thấy dữ liệu này trên cùng bảng wp_posts, quan hệ với các post thông qua trường post_parent.
  2. Attachments: giống Revisions
  3. Comments: trên bảng wp_comments, được liêm kết bởi cột comment_post_ID
  4. Comment meta: liên kết dữ liệu comments thông qua cột comment_id
  5. Terms: danh mục có liên kết với mỗi bài viết. Chúng đặt vào bảng wp_term_relationships thông qua cột object_id
  6. Post meta: Liên kết với bài đăng trong bảng wp_postmeta bởi cột post_id
  7. Taxonomy count: Bảng wp_term_taxonomy. Điều này không liên quan trực tiếp đến bài viết, tuy nhiên, nó chứa số lượng bài viết cho mỗi danh mục, vì vậy số lượng phải được tính toán lại sau bất kỳ thay đổi nào.

Vì vậy, để xóa một bài đăng, chúng ta phải xử lý tất cả các yếu tố đó.

Script xóa đồng loạt bài viết cũ không bị mất dữ liệu

Lưu ý: Bạn có thể thực hiện một lệnh truy vấn SQL.

Trước khi thực hiện bạn cần sao lưu cơ sở dữ liệu của mình để tránh mất dữ liệu.

Sử dụng các lệnh SQL theo thứ tự sau:

-- create temporary table of IDs to delete
DROP TABLE IF EXISTS poststodelete;
CREATE TABLE poststodelete (ID bigint(20) unsigned NOT NULL,PRIMARY KEY(ID));

-- insert ids to delete (THIS IS THE QUERY THAT YOU CUSTOMIZE)
insert into poststodelete
(SELECT ID FROM wp_posts WHERE post_type = ‘post’ and post_date<‘2013-04-01’);

-- include revisions and attachments for deletion
insert into poststodelete
(select a.id from wp_posts a inner join poststodelete b on a.post_parent=b.id);

-- Delete comment meta and comments
DELETE a, b
FROM wp_commentmeta a
inner join wp_comments b on a.comment_id=b.comment_id
inner join poststodelete c on b.comment_post_ID=c.id;

-- delete terms asociated with post
DELETE a FROM wp_term_relationships a inner join poststodelete b on a.object_id=b.id;

-- delete postmeta
DELETE a FROM wp_postmeta a inner join poststodelete b on a.post_id=b.id;

-- delete the post
DELETE a FROM wp_posts a inner join poststodelete b on a.id=b.id;

-- update taxonomy count
update wp_term_taxonomy t set count=(select count(*) from wp_term_relationships where term_taxonomy_id=t.term_taxonomy_id);

-- delete temporary table
DROP TABLE IF EXISTS poststodelete;

Nếu bạn có rất nhiều bài viết, có thể vẫn mất thời gian chờ trong khi thực thi SQL. Để giảm tải bạn có thể giới hạn số lượng dữ liệu lấy trong MySQL với cú pháp LIMIT.

-- insert ids to delete
insert into poststodelete
(SELECT ID FROM wp_posts WHERE post_type = ‘post’ and post_date<‘2013-04-01’ limit 10000);

Nếu bạn có một cách nào khác để xóa hàng ngàn bài viết trong WordPress hãy chia sẻ với chúng tôi bằng cách để lại bình luận dưới bài viết này nhé.

Nếu bạn thấy bài viết này hữu ích, hãy chia sẻ với bạn bè bằng cách nhấn nút chia sẻ ở bên dưới. Theo dõi chúng tôi trên Twitter và Facebook

  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Chuyên mục: Wordpress

Tôi giúp gì cho bạn?

HOÀNG WEB

Địa chỉ: Tây Sơn, Phường Quang Trung, Quận Đống Đa, Hà Nội

Hotline: 0987 342 124 – 0868 292 303 (8h:00 – 21h:00)

Email: [email protected]

Website: www.hoangweb.com

KẾT NỐI VỚI TÔI

  • Facebook
  • GitHub
  • YouTube

SẢN PHẨM

  • Plugin Thanh Toán Quét Mã QR Code Tự Động
  • WP2Speed – Tối ưu Google Speed
  • 23WebHost – Hosting Miễn Phí 100GB

LIÊN KẾT

  • Có nên thuê thiết kế website giá rẻ?
  • Hướng dẫn thanh toán
  • Chính sách hoàn tiền
  • Trung tâm hỗ trợ

Copyright © 2023 | All rights reserved | HOANG WEB
Mọi hình thức sao chép nội dung trên website này mà chưa được sự đồng ý đều là trái phép.