WPML
Status
Aberto

Visão geral do problema

A função nativa do WordPress has_category não funciona para posts traduzidos.

Um exemplo disso é o seguinte:

  1. Temos uma categoria com o slug em inglês “test” e sua tradução em francês “test-fr”.
  2. Essa categoria é atribuída a posts.
  3. Quando você invoca a has_category(”test”) dentro de um loop no arquivo single.php do seu tema, ela retorna true para o idioma padrão, mas false para a tradução.

Solução alternativa

Defina um novo filtro no arquivo functions.php do seu tema:

function wp_has_category ($category) {
$category = get_term_by('name', $category, 'category');
return has_category($category);
}
add_filter('wp_has_category', 'wp_has_category', 10, 1);

Substitua a função has_category por este novo filtro:
apply_filters( 'wp_has_category', 'test' )

Este filtro obtém a categoria traduzida com base no nome da original e verifica se a categoria traduzida está atribuída a um post.

Todos os problemas conhecidos →