register_taxonomy()
là công cụ cho công việc. Từ Codex:
Hàm này thêm hoặc ghi đè một phân loại.
Một lựa chọn sẽ là sao chép register_taxonomy()
$args
và sửa đổi chúng. Tuy nhiên, điều đó có nghĩa là bất kỳ thay đổi nào trong tương lai đối với register_taxonomy()
mã gốc sẽ bị ghi đè.
Do đó, ít nhất trong trường hợp này, tốt nhất là lấy các đối số ban đầu, sửa đổi các đối số tôi muốn thay đổi và sau đó đăng ký lại phân loại. Cảm hứng cho giải pháp này được gửi đến @Otto trong câu trả lời này cho một câu hỏi tương tự về các loại bài đăng tùy chỉnh .
Sử dụng people
loại bài đăng tùy chỉnh và people_category
phân loại từ ví dụ, điều này sẽ làm được:
function wpse_modify_taxonomy() {
// get the arguments of the already-registered taxonomy
$people_category_args = get_taxonomy( 'people_category' ); // returns an object
// make changes to the args
// in this example there are three changes
// again, note that it's an object
$people_category_args->show_admin_column = true;
$people_category_args->rewrite['slug'] = 'people';
$people_category_args->rewrite['with_front'] = false;
// re-register the taxonomy
register_taxonomy( 'people_category', 'people', (array) $people_category_args );
}
// hook it up to 11 so that it overrides the original register_taxonomy function
add_action( 'init', 'wpse_modify_taxonomy', 11 );
Lưu ý ở trên rằng tôi đánh máy register_taxonomy()
đối số thứ ba thành kiểu mảng dự kiến. Điều này không thực sự cần thiết vì việc register_taxonomy()
sử dụng wp_parse_args()
có thể xử lý một object
hoặc array
. Điều đó nói rằng, register_taxonomy()
's $args
có nghĩa vụ phải nộp như một array
theo Codex, vì vậy đây cảm thấy đúng với tôi.