Olá @elias.machado tudo bem? Essa é uma situação bem interessante vou me aventurar aqui para tentar explicar.
A primeira coisa que temos que ter em mente é que não podemos ter dois termos de uma taxonomia em um mesmo nível (termos irmão por assim dizer), no seu caso especifico temos dois valores especiais:
Maca e Maça que o banco de dados julga serem termos iguais… de primeira a gente pensa: não, esses caras são diferentes. Mas pois bem… o mysql tem algumas forma de fazer a comparação de valores, entre elas tem algumas configurações de como ele faz a comparação, em alguns casos por exemplo não há distinção entre letras maiúsculas e minúsculas, acentuadas ou não, dessa forma as palavras maca = maça = Maca = máçá = …
Algumas referencias que me ajudaram a entender melhor esse cenário:
https://dev.mysql.com/doc/refman/5.7/en/charset-binary-collations.html
https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html
Basicamente para resolver essa questão é necessário verificar o “COLLATE” que está sendo usado no mysql e alterar para algum tipo que tenha a comparação desejada. nem sempre isso é uma tarefa trivial:
Um exemplo pratico:
tenho a seguinte lista de termos apresentando o mesmo erro:
faço o seguinte teste consultando na base os valore “maca” e “maça”:
teoricamente ele deveria me retornar algum resultado apenas no primeiro teste e vazio no segundo, na pratica isso não acontece:
vou e altero o CHARACTER SET e o COLLATE da coluna name da tabela wp_terms:
e executo novamente o teste:
E após fazer isso é possível incluir o termo maça, pois o COLLATE “utf8mb4_bin” faz um comparação binária diferenciando ç do c
Não sei se consegui explicar bem, recomendo fortemente que você leia um pouco ali os links que mandei e veja quais as diferenças entre esses cara e suas restrições, nem sempre alterar entre os CHARACTER SET vai ser possível pois pode trucar alguns caracteres .
Att!