Eu sabia que não é possível ter os mesmos termos (termos slugs) em categorias e tags, mas surpreendentemente, como eu percebi hoje, também é o caso das taxonomias personalizadas.
Por exemplo, se meu site tem uma categoria chamada Linux (linux)
e eu também quero criar um termo de taxonomia personalizado chamado 'Linux', seria algo como Linux (linux-2)
, ou seja, as lesmas devem ser diferentes.
E se eu tentar renomear a lesma de volta linux
, recebo o erro "A lesma 'linux' já está sendo usada por outro termo" .
É possível ter os mesmos termos em categorias / tags e taxonomias personalizadas (sem causar estragos)?
Como replicar o problema?
Crie 3-5 novas postagens. Crie uma nova categoria e tag e atribua-as a essas postagens (apenas para fins de teste).
Salve as configurações de permalink.
crie dois novos termos sob a taxonomia customizada com o mesmo nome e slug que a categoria e a tag que você criou anteriormente e atribua-os a uma nova postagem com um tipo de postagem personalizada.
Exclua as taxonomias personalizadas.
Tente recriá-los e você receberá o erro: "A lesma 'XXX' já está em uso por outro termo".
Às vezes isso replicaria o problema, às vezes não.
Mas...
Se você conseguir criar uma categoria (ou tag) e uma taxonomia customizada com o mesmo nome e slug, faça-o. Em seguida, renomeie um deles e você notará que a categoria (ou tag) e a taxonomia personalizada foram renomeadas!
fonte
Respostas:
Acontece que este é um bug no núcleo. Eu estava prestes a denunciá-lo, mas descobri que ele existe há, há anos, e se aplica também a taxonomias personalizadas. Veja ingressos: # 5809 , # 21950 e # 22023 .
Se tudo correr como planejado, ele será fixado em
3.83.94.14.2 UPDATE: Sim, consertado !Enquanto isso, aqui está um plano para superar o problema - defina automaticamente um sufixo de slug personalizado para todos os termos recém-criados sob uma taxonomia:
Isso não é retrospectivo, ou seja, lesmas apenas dos novos termos sob a taxonomia ('livros' no nosso caso) são criadas com nosso sufixo personalizado ('-books').
Para definir um prefixo, altere esta linha na função:
para algo como isto:
E uma vez que o bug foi corrigido ...
Despejar o banco de dados e fazer uma pesquisa regex e substituir usando um editor de texto adequado, como Sublime Text ou TextMate (ou assim ).
Provavelmente não é a melhor maneira de fazê-lo, mas é bom o suficiente para fazer o trabalho.
fonte