register_taxonomy()
é a ferramenta para o trabalho. Do Codex:
Esta função adiciona ou substitui uma taxonomia.
Uma opção seria copiar o register_taxonomy()
$args
e modificá-los. No entanto, isso significaria que quaisquer alterações futuras no código register_taxonomy()
original seriam sobrescritas.
Portanto, pelo menos nesse caso, é preferível obter os argumentos originais, modificar os que eu quero alterar e, em seguida, registrar novamente a taxonomia. A inspiração para essa solução vai para @Oto nesta resposta a uma pergunta semelhante sobre tipos de postagem personalizados .
Usando o tipo de postagem personalizado people
e a people_category
taxonomia do exemplo, isso será feito:
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 );
Observe acima que eu teclar o terceiro argumento register_taxonomy()
para o tipo de matriz esperado. Isso não é estritamente necessário, pois register_taxonomy()
usa wp_parse_args()
que pode manipular um object
ou array
. Dito isso, register_taxonomy()
$args
devem ser enviados como array
de acordo com o Codex, então isso parece certo para mim.