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()
«s $args
должны быть представлены как в array
соответствии с Кодексом, так что чувствует себя хорошо для меня.