Xóa Toàn Bộ Bài Viết Cũ trong Chuyên Mục WordPress

65

Theo thời gian, website WordPress của bạn có thể tích tụ hàng ngàn bài viết. Một số trong đó có thể đã lỗi thời, không còn mang lại giá trị cho người đọc hoặc không nhận được traffic. Việc “dọn dẹp” nội dung cũ là một phần quan trọng của bảo trì website, nhưng nếu làm không đúng cách, nó có thể phá hủy nỗ lực SEO của bạn.

Bài viết này sẽ hướng dẫn bạn cách xóa các bài viết cũ một cách an toàn, chuẩn SEO, bao gồm cả việc sử dụng SQL để xóa hàng loạt và quan trọng nhất là bảo toàn thứ hạng từ khóa.

Tại Sao Cần Xóa (Hoặc Cập Nhật) Bài Viết Cũ?

  1. Nội Dung Lỗi Thời (Content Decay): Thông tin trong bài viết có thể không còn chính xác, làm giảm uy tín của website.
  2. Trải Nghiệm Người Dùng Kém: Người dùng truy cập vào một bài viết cũ, không liên quan có thể thoát trang ngay lập tức (tăng bounce rate).
  3. Lãng Phí Ngân Sách Thu Thập (Crawl Budget): Googlebot có một ngân sách thu thập dữ liệu giới hạn cho mỗi trang. Nếu bot tốn thời gian vào các bài viết rác, vô giá trị, nó sẽ chậm index các nội dung mới và quan trọng hơn của bạn.
  4. Cải Thiện Chất Lượng Toàn Trang: Loại bỏ nội dung chất lượng thấp (thin content) có thể giúp Google đánh giá cao hơn chất lượng tổng thể của website.

Rủi Ro SEO Nghiêm Trọng Nếu Xóa Bài Viết Sai Cách

Đây là sai lầm mà nhiều người mắc phải: chỉ đơn giản là vào Admin, bấm “Delete” và “Empty Trash”.

  • Lỗi 404 (Không Tìm Thấy Trang): Đây là hậu quả lớn nhất. Các URL đã bị xóa sẽ trả về lỗi 404.
  • Mất Backlink: Nếu các bài viết cũ đó đã từng được các trang khác trỏ link về (backlink), toàn bộ “sức mạnh” (link juice) từ các backlink đó sẽ bị mất trắng khi link đó trỏ về trang 404.
  • Trải Nghiệm Người Dùng Tồi Tệ: Người dùng click vào link từ Google hoặc từ một trang khác và gặp lỗi 404 sẽ rất khó chịu.
  • Tụt Hạng SEO: Google không thích các website có nhiều lỗi 404 và làm mất backlink. Kết quả tất yếu là website của bạn sẽ bị tụt hạng.

Quy Trình Xóa Bài Viết Cũ WordPress Chuẩn SEO (Từng Bước)

Để xóa bài viết cũ một cách an toàn, bạn cần tuân thủ quy trình sau.

Bước 1: Sao Lưu (Backup) Website TOÀN DIỆN

Đây là bước bắt buộc, không được bỏ qua. Trước khi thực hiện bất kỳ thao tác nào liên quan đến cơ sở dữ liệu (database), bạn phải sao lưu toàn bộ website (cả file và database). Nếu có bất kỳ sự cố nào, bạn có thể khôi phục lại ngay lập tức.

Bước 2: Lên Danh Sách Các Bài Viết Cần Xóa

Bạn cần xác định rõ tiêu chí xóa:

  • Bài viết quá cũ (ví dụ: hơn 2-3 năm).
  • Bài viết không có traffic trong 6-12 tháng qua.
  • Nội dung không còn liên quan, không thể cập nhật (ví dụ: tin tức sự kiện đã qua lâu).

Bước 3: Thiết Lập 301 Redirect (Chìa Khóa Của Chuẩn SEO)

Đây là bước quan trọng nhất để đảm bảo SEO. Với mỗi URL bạn định xóa, bạn phải chuyển hướng vĩnh viễn (301 redirect) nó đến một URL khác có liên quan.

  • Redirect về đâu?
    • Tốt nhất: Redirect đến một bài viết mới hơn, cập nhật hơn về cùng chủ đề.
    • Khá tốt: Redirect về trang chuyên mục cha chứa bài viết đó.
    • Cuối cùng: Nếu không có trang nào liên quan, hãy redirect về trang chủ. (Hạn chế cách này).
  • Làm thế nào?
    • Plugin: Sử dụng các plugin miễn phí như “Redirection” hoặc “Rank Math SEO” (có tính năng Redirection) để tạo 301 redirect một cách dễ dàng. Bạn chỉ cần nhập URL cũ và URL mới.
    • .htaccess: Nếu bạn rành kỹ thuật, bạn có thể thêm trực tiếp vào file .htaccess.

Chỉ sau khi đã thiết lập 301 redirect cho tất cả các URL sắp xóa, bạn mới được chuyển sang Bước 4.

Bước 4: Thực Thi Xóa Bài Viết Hàng Loạt Bằng SQL

Sau khi đã backup và thiết lập redirect, bạn có thể tiến hành xóa bài viết khỏi database. Cách này nhanh hơn rất nhiều so với việc xóa thủ công trong Admin.

Cảnh báo: Thao tác này can thiệp trực tiếp vào database. Hãy chắc chắn bạn biết mình đang làm gì.

Đăng nhập vào phpMyAdmin của bạn, chọn database của website và chạy truy vấn SQL sau.

Ví dụ: Câu lệnh dưới đây sẽ xóa tất cả các bài viết (và dữ liệu liên quan của chúng) trong chuyên mục có ID = 1, cũ hơn 6 tháng, bất kể trạng thái (đã đăng, bản nháp, riêng tư…).

DELETE P, PM, TR
FROM
wp_posts AS P
-- Dùng JOIN để TÌM các bài trong chuyên mục chỉ định (ID = 1)
JOIN wp_term_relationships AS TR_FIND ON P.ID = TR_FIND.object_id
JOIN wp_term_taxonomy AS TT_FIND ON TR_FIND.term_taxonomy_id = TT_FIND.term_taxonomy_id
-- Dùng LEFT JOIN để XÓA tất cả meta và relationship của các bài đã tìm thấy
LEFT JOIN wp_term_relationships AS TR ON P.ID = TR.object_id
LEFT JOIN wp_postmeta AS PM ON P.ID = PM.post_id
WHERE
TT_FIND.term_id = 1 -- <--- THAY ĐỔI ID CHUYÊN MỤC CỦA BẠN
AND P.post_date < NOW() - INTERVAL 6 MONTH -- <--- THAY ĐỔI KHOẢNG THỜI GIAN (ví dụ: 12 MONTH, 2 YEAR)
AND P.post_type = 'post'
AND P.post_status IN ('publish', 'private', 'draft', 'pending'); -- <--- Chỉ xóa bài viết (không xóa trang, revision...)

Giải thích câu lệnh:

  • DELETE P, PM, TR: Chỉ định xóa dữ liệu từ 3 bảng: wp_posts (nội dung bài viết), wp_postmeta (dữ liệu meta như custom fields), và wp_term_relationships (liên kết giữa bài viết và chuyên mục/tag).
  • JOIN... TT_FIND: Phần này dùng để tìm các bài viết thuộc một term_id (ID chuyên mục) cụ thể.
  • LEFT JOIN... TR... PM: Phần này dùng để chọn tất cả dữ liệu liên quan (meta và relationship) của các bài viết đã tìm thấy ở trên để xóa chúng.
  • WHERE TT_FIND.term_id = 1: Lọc các bài viết trong chuyên mục có ID là 1. Bạn phải thay số 1 bằng ID chuyên mục bạn muốn xóa.
  • WHERE P.post_date < ...: Lọc các bài viết có ngày đăng cũ hơn 6 tháng tính từ hiện tại.
  • WHERE P.post_type = 'post': Đảm bảo chỉ xóa “post” (bài viết) chứ không xóa “page” (trang) hay các loại khác.

Bước 5: Cập Nhật Lại Bộ Đếm (Count) Của Chuyên Mục

Sau khi xóa một lượng lớn bài viết, bộ đếm số lượng bài viết trong chuyên mục (mà bạn thường thấy trong Admin hoặc trên sidebar) có thể bị sai. Bạn cần chạy câu lệnh SQL sau để tính toán và cập nhật lại cho chính xác.
UPDATE wp_term_taxonomy AS tt
SET count = (
SELECT COUNT(p.ID)
FROM wp_term_relationships AS tr
JOIN wp_posts AS p ON p.ID = tr.object_id
WHERE tr.term_taxonomy_id = tt.term_taxonomy_id
AND p.post_type = 'post'
AND p.post_status = 'publish'
)
WHERE tt.taxonomy = 'category';

Bạn cũng có thể chạy lệnh tương tự cho ‘tag’ bằng cách thay tt.taxonomy = 'category' thành tt.taxonomy = 'post_tag'.

Bước 6: Dọn Dẹp & Theo Dõi

  1. Xóa Cache: Nếu bạn dùng plugin cache (như WP Rocket, Litespeed Cache), hãy xóa toàn bộ cache.
  2. Cập Nhật Sitemap: Gửi lại sitemap của bạn cho Google qua Google Search Console để Google biết về sự thay đổi.
  3. Theo Dõi Lỗi 404: Sử dụng Google Search Console để theo dõi xem có phát sinh lỗi 404 nào không (do bạn quên redirect) và xử lý chúng kịp thời.

Kết Luận

Xóa nội dung cũ là một chiến lược SEO nâng cao. Nó có thể mang lại lợi ích lớn nếu được thực hiện đúng cách. Hãy luôn nhớ quy tắc vàng: BACKUP -> REDIRECT -> DELETE -> UPDATE COUNT. Đừng bao giờ xóa một URL mà không chuyển hướng nó, nếu không bạn sẽ lãng phí toàn bộ sức mạnh SEO mà bài viết đó đã tích lũy.

------------
Liên hệ kỹ thuật viên để được tư vấn tốt nhất!
Telegram: Telegram kỹ thuật viên
Group Telegram: Group Telegram Hỗ Trợ
Email: Gửi Email