register_taxonomy()
é a ferramenta para o trabalho. Do Codex:
Esta função adiciona ou substitui uma taxonomia.
Uma opção seria copiar register_taxonomy()
$args
e modificá-los. No entanto, isso significaria que quaisquer alterações futuras no register_taxonomy()
código original seriam substituídas.
Portanto, pelo menos nesse caso, é preferível obter os argumentos originais, modificar os que quero alterar e registrar novamente a taxonomia. A inspiração para esta solução está no @Otto nesta resposta a uma pergunta semelhante sobre tipos de postagem personalizados .
Usando o people
tipo de postagem personalizada 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 digitei o terceiro register_taxonomy()
argumento no tipo de matriz esperado. Isso não é estritamente necessário, pois os register_taxonomy()
usos wp_parse_args()
que podem manipular um object
or array
. Dito isto, register_taxonomy()
's $args
é suposto ser submetido como um array
acordo com o Codex, de modo que este se sente bem para mim.