Đổi tên các loại bài đăng tùy chỉnh và phân loại


31

Tôi bắt đầu phát triển một trang web với hơn một chục loại bài tùy chỉnh. Tôi muốn đổi tên một vài trong số chúng, không chỉ giá trị hiển thị, mà cả tên loại bài đăng tùy chỉnh thực tế. Tuy nhiên, tôi lo lắng rằng chỉ cần chạy một truy vấn cập nhật SQL mà tôi sẽ bỏ lỡ một số nơi tôi cần thay đổi mọi thứ hoặc ghi đè lên một phần dữ liệu được tuần tự hóa. Tôi đã nhập hơn 3.000 mục, vì vậy tôi không thể khởi động lại với cơ sở dữ liệu sạch.

Điều gì sẽ là cách tốt nhất để đổi tên một loại bài đăng tùy chỉnh? Làm thế nào về việc đổi tên một nguyên tắc phân loại?


Một câu hỏi tiếp theo trong cùng một hướng liên quan đến các quy tắc viết lại .htaccess tùy chỉnh. Sẽ có rất nhiều quy tắc còn sót lại làm tắc nghẽn cơ sở dữ liệu của tôi? Tôi chưa ra mắt trang web, vì vậy tôi không cần bất kỳ liên kết cũ nào được chuyển hướng.
Derek Perkins

Câu trả lời:


47

Truy vấn SQL để đổi tên bài viết:

UPDATE  `wp_posts` SET  `post_type` =  '<new post type name>' WHERE  `post_type` = '<old post type name>';

Truy vấn SQL để đổi tên phân loại:

UPDATE  `wp_term_taxonomy` SET  `taxonomy` =  '<new taxonomy name>' WHERE  `taxonomy` = '<old taxonomy name>';

Điều đó sẽ chăm sóc tất cả các khu vực cơ sở dữ liệu. Chỉ cần nhớ khớp tên mới trong mã nơi đăng các loại bài đăng hoặc phân loại. Theo tôi biết, điều này chưa được xử lý trong bất kỳ plugin nào.


9
Câu trả lời tuyệt vời, chính xác những gì tôi cần. Đây là một mẹo trong trường hợp những người khác gặp phải vấn đề tương tự như tôi đã làm: Sau khi tôi chạy truy vấn và cập nhật mã của mình, mọi thứ về cơ bản vẫn hoạt động nhưng khi tôi thử truy cập trang cho một mục nội dung riêng lẻ thì tôi đã gặp lỗi 404. Tôi nghĩ rằng một số bộ đệm permalink cần phải được thiết lập lại; Tôi đã đi đến Công cụ> Permalinks và nhấp vào Lưu, sau đó các trang chi tiết bắt đầu hoạt động.
Andy Giesler

Khi tôi làm điều này, tôi cũng cập nhật trường hướng dẫn. Điều này có thể giúp làm cho nó không cần thiết để tạo lại permalinks như @AndyGiesler đã đề cập. Chỉ cần bao gồm các phần sau trong câu lệnh CẬP NHẬT của bạn: guide = REPLACE (guide, '<tên loại bài đăng cũ>', '<tên loại bài đăng mới>')
rinogo

Chỉ cần thêm một chút thông tin vào bình luận của rinogo, đây là cách an toàn hơn một chút để cập nhật hướng dẫn: CẬP NHẬT wp_posts SET guide = REPLACE (guide, 'post_type = <tên loại bài đăng cũ>', 'post_type = <tên loại bài đăng mới > ');
David

chỉ cần lưu ý bạn sẽ cần xem tên bảng của mình khi chạy trên
multisite

6

Xin chào @Derek Perkins:

Nói chung , câu trả lời của @John P Bloch là đúng nhưng có một cảnh báo . Các plugin và thậm chí các chủ đề tùy chỉnh có thể và có thể lưu trữ thông tin loại bài đăng và do đó để đảm bảo rằng bạn sẽ không làm hỏng dữ liệu của mình, bạn cần đảm bảo các plugin và chủ đề của mình không lưu trữ các loại bài đăng hoặc nếu chúng làm bạn cập nhật dữ liệu của chúng cũng.

Bạn có thể cho chúng tôi biết bạn đang sử dụng plugin nào không?


Đó là một điểm hay. Tôi đang xây dựng tùy chỉnh chủ đề của mình, vì vậy tôi chắc chắn sẽ phải thực hiện và thay đổi mã của mình. Tuy nhiên, tôi không có bất kỳ plugin nào đang lưu trữ thông tin loại bài đăng tùy chỉnh.
Derek Perkins

đây là một quan điểm tốt. Tôi đã sử dụng Trường tùy chỉnh nâng cao và đối với mỗi nhóm trường được đính kèm với bài đăng đó, bạn phải đặt lại thủ công tên đó thành tên CPT mới. Sau đó nó hoạt động tốt mặc dù.
Chris Rae

4

Nếu bạn không muốn phải tự thực hiện các truy vấn SQL, có một số bổ trợ bạn có thể sử dụng:

Tôi đã sử dụng thành công Chuyển đổi loại bài đăng để thay đổi hàng loạt bài viết.

Để chuyển đổi các bài viết bất thường thì Post Type Switcher là một lựa chọn tốt hơn.


Cảm ơn đã đăng những liên kết đó. Tôi ổn khi tự chạy các truy vấn SQL, nhưng chúng chắc chắn sẽ có ích cho những người khác đi qua bài đăng này.
Derek Perkins

điều này dường như chuyển đổi các loại bài đăng, không đổi tên chúng
vladkras
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.