WPML 3.9 đã giới thiệu khả năng hiển thị nội dung lấy từ ngôn ngữ gốc khi xem các trang bằng các ngôn ngữ khác. Nếu trang web của bạn dựa vào việc nhân bản nội dung trước phiên bản 3.9, bạn có thể muốn xóa tất cả nội dung trùng lặp khỏi trang web của mình trước khi sử dụng chế độ dịch mới này.
Cách sử dụng hướng dẫn này
Các bước được cung cấp trên trang này sẽ xóa các cài đặt và nội dung khỏi cơ sở dữ liệu. Chỉ tiến hành nếu bạn biết mình đang làm gì và chắc chắn phải bắt đầu bằng việc tạo một bản sao lưu toàn bộ cơ sở dữ liệu trang web của bạn.
Để sử dụng các truy vấn SQL được cung cấp, bạn phải chỉnh sửa chúng:
- Thay thế XXXX bằng loại bài viết mà bạn muốn xóa nội dung trùng lặp (ví dụ: “post”, “product” hoặc “page”).
- Thay thế YYYY bằng mã ngôn ngữ mặc định của trang web (ví dụ: “en”).
- Thay thế wp_ bằng tiền tố bảng được cấu hình thông qua biến $table_prefix trong tệp wp-config.php (mặc định là wp_).
Cuối cùng, bạn cần chạy các truy vấn này bằng một trong các công cụ làm việc với cơ sở dữ liệu SQL, ví dụ như phpMyAdmin.
1. Xóa nội dung trùng lặp
Xóa nội dung trùng lặp khỏi wp_posts
DELETE FROM wp_posts
WHERE post_type = 'XXXX' AND ID IN (
SELECT pm.post_id
FROM wp_postmeta pm
JOIN wp_icl_translations t ON t.element_id = pm.meta_value
WHERE pm.meta_key = '_icl_lang_duplicate_of' AND pm.meta_value > 0 AND
t.element_type LIKE 'post_%' AND t.language_code = 'YYYY'
)2. Xóa cài đặt dịch thuật
Xóa cài đặt dịch thuật khỏi wp_icl_translations
DELETE FROM wp_icl_translations
WHERE element_type = 'post_XXXX' AND element_id IN (
SELECT pm.post_id
FROM wp_postmeta pm
JOIN wp_icl_translations t ON t.element_id = pm.meta_value
WHERE meta_key = '_icl_lang_duplicate_of' AND meta_value > 0 AND t.language_code = 'YYYY'
)3. Xóa post meta bị mồ côi
Lưu ý rằng việc thực thi truy vấn này khá chậm và có thể bị quá thời gian, tùy thuộc vào cài đặt máy chủ của bạn. Ngoài ra, bạn không bắt buộc phải chạy truy vấn này vì nó chỉ được sử dụng để dọn dẹp cơ sở dữ liệu của bạn khỏi các post meta bị mồ côi.
Xóa các mục mồ côi khỏi wp_postmeta
DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL