Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Exibir a categoria no index

Temos as categorias sendo exibidas na taxonomia usadas para filtrar. Quero que a categoria específica de cada 'imovel' (no meu caso fiz com receitas) apareça na tela. Fiz algo parecido com o que temos no select, mas todos os itens da lista estão recebendo o mesmo parâmetro que é a primeira categoria cadastrada... Como posso exibir na tela junto ao the_title e the_content as categorias/taxonomia de cada 'imovel'?

<a href="<?php the_permalink(); ?>">
   <?php the_post_thumbnail(); ?>
   <h2><?php the_title(); ?></h2>
   <span>Categoria: <?php $categoria = get_terms('categoria'); foreach($categoria as $category) ?><?= $category->name; ?></span>
   <div><?php the_content(); ?></div>
</a>

Código usado para exibir acima... A categoria exibida está sendo a primeira cadastrada independente da cadastrada no painel do WP.

9 respostas

Oi Matheus, a função the_category(), é semelhante a the_title(), apresenta todas as categorias em que o imóvel tá marcado.

O padrão é que seja exibida como uma lista, mas você pode definir que serão exibidas uma na frente da outra via parâmetro.

<?php the_category(', ') ?>

Dessa forma aparecerá uma na frente da outra separadas por vírgula.

Continuo sem conseguir exibir a categoria. Quando uso a função the_category(', ') não retorna nada.

Cola o código completo desse loop pra gente ver?

Segue o código

                // Novo loop passando o novo item a trazer
                $loop = new WP_Query ($args);
                if( $loop->have_posts() ) {
            ?>
        <ul>
            <?php
                while ($loop->have_posts()){
                    $loop->the_post();
            ?>
            <li>
            <a href="<?php the_permalink(); ?>">
                <?php the_post_thumbnail(); ?>
                <h2><?php the_title(); ?></h2>
                <span>Categoria: <?php $categoria = get_terms('categoria'); foreach($categoria as $category) ?><?= $category->name; ?></span> // exibindo a mesma para todos
                <p>Categoria: <?php the_category(', ') ?></p> // não exibindo nada
                <div><?php the_content(); ?></div>
            </a>
            </li>
            <?php
                    }
                }
            ?>
        </ul>

Oi Matheus, só conheço um motivo pro the_category não funcionar. Você não está usando as categorias padrões do WordPress. É uma categorização customizada, certo?

O get_terms vai retornar todas as categorias por padrão, você precisa filtrar por post neste caso. A alternativa é usar a função wp_get_post_terms.

wp_get_post_terms(get_the_ID(), 'categoria');

O id do post é opcional, mas acho uma boa ideia passar já que ele é o primeiro parâmetro. Testa pra mim?

Sim, a categoria não é do WordPress, é customizada. Tentei usar essa linha, mas continuo sem conseguir exibir o nome da minha categoria.

solução!

Opa, não, você vai fazer o mesmo loop que estava fazendo antes, só vai trocar a função. Vai trocar o get_terms pelo wp_get_post_terms, mas o laço do foreach vai continuar o mesmo. Foi assim que fez?

Obrigado, agora foi... Eu havia tirado a parte do foreach...

O código final ficou assim

<p>Categoria: <?php $categoria = wp_get_post_terms(get_the_ID(), 'categoria'); foreach($categoria as $category) ?><?= $category->name; ?></p>

Novamente agradeço pela ajuda! :)

Ótimo Matheus! Precisando, estamos por aqui!