Cách tốt nhất để lập trình loại bỏ một danh mục / thuật ngữ khỏi bài viết


8

Tôi đang làm việc trên một tập lệnh để chuyển đổi tất cả các bài đăng trong một danh mục nhất định để sử dụng cờ postmeta (thử nghiệm của MySQL đã cho tôi thấy rằng trên một trang web lớn như của tôi, điều này sẽ dẫn đến việc giảm thời gian truy vấn có ý nghĩa).

Khi chuyển đổi bài viết tôi muốn chỉ tìm nạp tất cả các bài đăng trong danh mục, thêm postmeta sau đó xóa danh mục, điều này sẽ cho phép tôi tải lại chức năng đó cho đến khi không còn bài đăng nào trong danh mục.

Tôi không thể tìm thấy một chức năng tốt để loại bỏ một thuật ngữ từ một bài viết mặc dù. Tôi muốn cung cấp cho nó id bài đăng và thuật ngữ phân loại + ID và xử lý nó cho tôi.

Tôi cũng quan tâm đến các plugin có thể thực hiện chuyển đổi cho tôi nếu có ai biết về các plugin. Tôi không thể tìm thấy bất kỳ thứ gì đã làm cat-> postmeta, không giống như điều ngược lại có thể được xử lý bởi plugin của Scribu.


Bạn có muốn làm điều đó thông qua API không, hoặc có thể làm điều này với các truy vấn SQL không? Sẽ không quá khó, chỉ cần một truy vấn để chèn các giá trị postmeta mới, một truy vấn để xóa các mối quan hệ sau danh mục và có thể một truy vấn để cập nhật số lượng danh mục.
Jan Fabry

Tôi chắc chắn muốn sử dụng API. Số lượng danh mục, vv không phải là điều tôi muốn phải tính đến trong trường hợp này. Wp_get_object_terms () / wp_set_object_terms () sẽ giúp bạn dễ dàng thao tác các thuật ngữ, nhưng tôi đã hy vọng giải pháp một hàm từ lõi.
jerclarke

Câu trả lời:


6

Hmmm, không thể nhớ hoặc tìm chức năng phù hợp hoặc.

Có được wp_set_object_terms()sử dụng trong nhiều hàm như thế nào wp_set_post_categories(). Nó có thể ghi đè các danh mục cho một bài viết.

Vì vậy, bạn có thể nhận được danh mục bài đăng, kiểm tra một mục không mong muốn và viết lại không bao gồm không mong muốn trong trường hợp đó.


Đây là giải pháp tốt nhất cho đến nay, và có lẽ tôi sẽ sử dụng. get_object_terms () để tìm nạp, hủy đặt () cái tôi không muốn, sau đó wp_set_object_terms () để lưu lại mảng. Quá tệ, không có wp_set_object_term () và wp_remove_object_term ().
jerclarke

Đây là cách tôi đã làm nó trong quá khứ. Nó khá là rắc rối và đầy rẫy để cải thiện, nhưng tôi tin rằng nó là mẫu tốt nhất.
biên tập viên
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.