Cập nhật lại Category cho blog WordPress

Mới chuyển dữ liệu từ Blogger sang nên còn nhiều việc phải làm lắm nên chưa thể … viết bài mới được, hehe. Tôi sẽ vừa làm vừa viết lại những khó khăn gặp phải trong quá trình chuyển dữ liệu hay quá trình xử lý dữ liệu sau khi chuyển xong bởi vì tôi tin việc chuyển đổi dữ liệu giữa các blog không phải là chuyện hiếm. Và có thể bạn sẽ gặp phải những vấn đề mà tôi và visaonho đã gặp phải.

Vấn đề đầu tiên mà tôi vừa mới giải quyết xong là : Các phần mềm tặng key bản quyền bên Visonho.info đặt trong chuyên mục “Ban quyen phan mem”, trong khi anhhangxomonline.net lại đặt vào chuyên mục “Nhanhtay“. Vậy làm sao để chuyển toàn bộ các bài viết từ “Ban quyen phan mem” về “Nhanhtay” ? WordPress không có tính năng giúp bạn thực hiện điều này, do đó để thực hiện, tôi phải chui vào database để làm. Sở dĩ tôi viết bài này bởi vì đây là lần thứ 2 tôi thực hiện công việc này và toàn phải mò lại từ đầu. Hồi trước làm lâu quá rồi nên quên mất. Lần này quyết tâm viết lại trên blog để sau này có gì tìm lại và cứ thế mà làm.

Lưu ý, trước khi cập nhật, bạn cần phải tiến hành backup database để đề phòng sự cố nhé !

Công việc cập nhật lại category liên quan đến 3 bảng trong database của WordPress, đó là :

– terms : bảng này lưu lại thông tin của các thẻ (tag) và chuyên mục (category) của blog. Mỗi một thẻ hoặc chuyên mục trong blog sẽ có một mã số được lưu trong cột “term_id”.

– term_taxonomy : Tôi có chuyên mục “Nhanhtay” nhưng đồng thời trong một vài bài viết tôi cũng sử dụng từ khóa “Nhanhtay” để làm thẻ (tag) cho bài viết đó. Bảng này sẽ giúp chúng ta phân biệt được “Nhanhtay” nào là Category và “Nhanhtay” nào là tag dựa vào trường “taxonomy”. Nếu nó là Category, nó sẽ được WordPress tự động đặt tên là “category”. Nếu nó chỉ là một tag thì WordPress sẽ tự động đặt tên là “post_tag”. Chúng được phân biệt dựa vào mã số được lưu ở cột “term_taxonomy_id”.

– term_relationships : bảng này chịu trách nhiệm gắn kết một bài viết với các thẻ (tag) và Category dựa vào : mã số của bài viết (object_id) và mã số của category/tag (term_taxonomy_id).

Tóm lại, tôi muốn chuyển các bài viết từ mục “Ban quyen phan mem” sang chuyên mục “Nhanhtay” thì phải làm các công đoạn sau. Ở mỗi công đoạn, bạn nên lưu ra giấy các mã số ID tìm được để khỏi nhầm lẫn sau này.

– Vào bảng “terms” để tìm mã số (term_id) của “Ban quyen phan mem” và “Nhanhtay”.
– Vào bảng “term_taxonomy” để tìm ra mã số category (term_taxonomy_id) của chuyên mục “Ban quyen phan mem” và chuyên mục “Nhanhtay”. Chúng được đặt tên là “category”.
– Vào bảng “term_relationships”, tìm những bài viết nào có mã số của “Ban quyen phan mem” và cập nhật mã số đó thành mã số của “Nhanhtay”.
– Cuối cùng cập nhật lại số lượng bài viết trong chuyên mục “Nhanhtay”.

Để thực hiện, bạn vào phần quản trị database và sử dụng phpMyAdmin để chỉnh sửa database. Cụ thể như sau :

Bảng Terms

Cập nhật lại Category cho blog WordPress

– Bấm chuột vào bảng “wp_terms”. Chữ “wp” thì tùy vào lúc tạo blog bạn đặt là gì, trong trường hợp của tôi là “wp”.
– Chọn thẻ SQL để mở trang truy vấn.
– Gõ vào câu lệnh sau và bấm nút Go

SELECT * FROM `wp_terms`
WHERE name = “Ban quyen phan mem” OR name = “Nhanhtay”

Tôi sẽ có được ID của “Nhanhtay” là 68 và ID của “Ban quyen phan mem” là 3268. Tôi chép ra giấy 2 giá trị này rồi chuyển qua bảng tiếp theo.

Bảng Term_taxonomy

Cập nhật lại Category cho blog WordPress

– Bấm chuột vào bảng “wp_term_taxonomy”. Chọn thẻ SQL để mở trang truy vấn.
– Gõ vào câu lệnh sau và bấm nút Go.

SELECT * FROM `wp_term_taxonomy`
WHERE `term_id` = 3268 OR `term_id` = 68

Câu truy vấn bên trên trả về cho tôi 3 dòng và tôi phải lọc để lấy ra ID đúng của chủ đề “Nhanhtay” và chủ đề “Ban quyen phan mem”. Bạn thấy hình minh họa bên trên, “Nhanhtay” (term_id=68) có 2 dòng kết quả và bởi vì cái tôi muốn là Category nên tôi chọn mẫu tin có “taxonomy” là “category”. Cuối cùng, tôi có ID chính xác của chủ đề “Nhanhtay” là 70 và ID chính xác của chủ đề “Ban quyen phan mem” là 3278.

Bảng Term_relationships

Cập nhật lại Category cho blog WordPress

– Bấm chuột vào bảng “wp_term_relationships”. Chọn thẻ SQL để mở trang truy vấn.
– Gõ vào câu lệnh sau và bấm nút Go.

UPDATE `wp_term_relationships`
SET `term_taxonomy_id` = 70
WHERE `term_taxonomy_id` = 3278

Kết quả câu truy vấn là có 646 bài viết được cập nhật. Tuy nhiên, chuyên mục “Nhanhtay” trên giao diện blog vẫn hiển thị số lượng cũ. Đúng ra nó phải bằng số lượng cũ + số lượng mới được chuyển sang, tổng cộng là 646 bài viết. Do đó, bạn hãy mở bảng “wp_term_taxonomy” và viết câu lệnh cập nhật lại số lượng như sau :

UPDATE `wp_term_taxonomy`
SET `count`=
(SELECT count(*) FROM `wp_term_relationships` WHERE `term_taxonomy_id` = 70)
WHERE `taxonomy_id` = 70

Cập nhật lại Category cho blog WordPress

Vậy là xong !

2 Comments
  1. Trong WP có chức năng edit nhiều bài viết cùng một lúc, trong trường hợp này thì anh chỉ cần lọc các bài viết trong chuyên mục “Ban quyen phan mem” rồi chọn chức năng edit nhiều bài viết, sau đó chọn chuyên mục mới cho tất cả các bài viết là được mà.

    http://i.imgur.com/Apn8h.png

Ý kiến phản hồi