register_taxonomy()
є інструментом для роботи. З Кодексу:
Ця функція додає або замінює таксономію.
Один із варіантів - скопіювати register_taxonomy()
$args
та змінити їх. Однак це означатиме, що будь-які майбутні зміни вихідного register_taxonomy()
коду будуть перезаписані.
Тому, принаймні, у цьому випадку бажано отримати оригінальні аргументи, змінити ті, які я хочу змінити, а потім перереєструвати таксономію. Натхнення для цього рішення відповідає @Otto у цій відповіді на аналогічне запитання про власні типи публікацій .
Використовуючи people
спеціальний тип публікації та people_category
таксономію з прикладу, це зробимо так:
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 );
Зауважте вище, що я ввів третій register_taxonomy()
аргумент у очікуваний тип масиву. Це не є строго необхідним, оскільки register_taxonomy()
використання, wp_parse_args()
яке може обробляти object
або array
. При цьому сказано, register_taxonomy()
що $args
вони повинні бути представлені array
відповідно до Кодексу, так що я вважаю себе правильним.