1
resposta

$_GET não filtra por categoria

Estou seguindo o video 2 da aula 5 do "WordPress: criação de um tema personalizado" e acabou que meu filtro não está filtrando os meus posts por categoria.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Após aplicar o filtro, o wordpress não retorna nenhum post com as categorias selecionadas. Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Poderiam me auxiliar? vi um outro post no fórum no qual tiveram o mesmo problema que o meu e resolveram, mas não colocaram como foi feita a solução.

1 resposta

Olá João, tudo bem?

Pelo que entendi, você está tendo problemas para filtrar seus posts por categoria usando o $_GET, certo?

Uma possível solução para esse problema é verificar se a categoria selecionada existe e se está correta antes de realizar a consulta. Você pode fazer isso usando a função get_term_by() do WordPress.

Por exemplo, você pode adicionar o seguinte código antes de realizar a consulta:

$category = get_term_by( 'slug', $_GET['categoria'], 'category' );
if ( $category && ! is_wp_error( $category ) ) {
    $args['category_name'] = $_GET['categoria'];
} else {
    // categoria não existe ou está incorreta
}

Esse código verifica se a categoria selecionada existe e se está correta. Se estiver, adiciona a categoria aos argumentos da consulta. Caso contrário, você pode exibir uma mensagem de erro ou simplesmente não realizar a consulta.


Além disso, observei que você personalizou seu site e usou "Generos" em vez de "paises" como parâmetro de categorização. No entanto, é importante garantir que o parâmetro $_GET['categoria'] seja usado corretamente. No PHP, a linguagem de programação usada pelo WordPress, os identificadores, como variáveis e índices de matriz associativa ($_GET, $_POST, etc.), são sensíveis a maiúsculas e minúsculas.

Portanto, ao passar parâmetros via URL para recuperar dados usando $_GET, você deve usar o mesmo nome exato definido no parâmetro. Se você especificou o parâmetro como "categoria", deve usar $_GET['categoria'] para recuperar o valor corretamente.

Se você definir o parâmetro como "categoria" em algum lugar, como, por exemplo, na URL: http://exemplo.com/?categoria=algum-valor, então você precisa usar $_GET['categoria'] em todos os locais onde deseja recuperar o valor corretamente.

Certifique-se de usar $_GET['categoria'] em vez de $_GET['Categoria'] para garantir que o código funcione corretamente. Lembre-se de que o PHP é sensível a maiúsculas e minúsculas, então $_GET['Categoria'] e $_GET['categoria'] são considerados diferentes.

Em resumo, para garantir a consistência e o funcionamento correto do código, é importante usar o mesmo nome exato do parâmetro em todos os locais onde você deseja recuperar os valores corretos de $_GET. Portanto, no seu exemplo, é recomendável usar $_GET['generos'].


Mas o que eu realmente acredito que possa ter originado o problema seria o momento que você definiu o 'taxonomy' como 'paises' e em todas as outras partes do código você usou 'Generos' como parâmetro.

Então tente corrigir isso e veja se funciona.

Espero que essas sugestões ajudem a resolver seu problema. Qualquer dúvida, é só perguntar!

Espero ter ajudado, abraços e bons estudos!