Em algum momento pode ser necessário alterar o comportamento de uma taxonomia já registrada, pelo WordPress, pelo tema ou algum plugin.
Por padrão a função register_taxonomy()
pode ser utilizada para criar ou modificar uma taxonomia, e vamos entender aqui o segundo caso.
Interpretando literalmente a documentação, poderíamos entender que, para mudar uma taxonomia de hierárquica para não hierárquica, podemos fazer apenas isso:
function custom_update_taxonomy() {
$args = [
'hierarchical' => true
];
register_taxonomy( 'post_tag', 'post', $args );
}
add_action( 'init', 'custom_update_taxonomy', 11 );
A taxonomia post_tag
, é nativa dos posts do WordPress, no código acima assumimos que queremos modificar apenas um argumento dessa taxonomia, mudando para hierárquica, já que por padrão ela é uma taxonomia não hierárquica.
Mas o resultado desse código é a sobreposição completa da taxonomia, removendo qualquer pré-definição e mantendo apenas o parâmetro hierarchical
definido, utilizando todos os demais com valores padrão.
E essa não é a abordagem que queremos apresentar aqui, o que queremos é alterar apenas um, ou alguns parâmetros dessa taxonomia.
Então, vamos seguir uma abordagem diferente, mais ou menos assim:
- Obter o objeto completo da taxonomia em questão;
- Fazer as alterações necessárias; e
- Registrá-la novamente, com os parâmetros atualizados.
function custom_update_taxonomy() {
// obtém o objeto da taxonomia em questão `post_tag`
$post_tag_args = get_taxonomy( 'post_tag' );
// alteramos as propriedades necessárias no objeto
$post_tag_args->hierarchical = true;
// registramos novamente a taxonomia, fazendo o casting do objeto para array
register_taxonomy( 'post_tag', 'post', (array) $post_tag_args );
}
// a prioridade do hook deve ser maior o utilizado para a função original
// nesse caso, 11 é suficiente
add_action( 'init', 'custom_update_taxonomy', 11 );
Com isso atualizamos as tags dos posts para serem hierárquicas, e com isso poderão definir outra tag como “pai” e criar toda hierarquia que podemos observar nas categorias dos posts.
Esse é apenas um exemplo e você pode alterar qualquer parâmetro da função register_taxonomy
. Veja aqui sua documentação completa: https://developer.wordpress.org/reference/functions/register_taxonomy/
Para qualquer dúvida ou sugestão, faça um comentário abaixo.