Como modificar uma taxonomia registrada no WordPress

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.