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

Aula 5 - Taxonomia

Olá pessoal, tudo bem?

Eu gostaria de imprimir a categoria do meu imóvel na sua página (como normalmente blogs possuem uma âncora que direciona para página das tags).

Como eu posso fazer isso?

Eu dei uma lida no get_terms() (https://developer.wordpress.org/reference/functions/get_terms/), mas não entendi a utilidade dos seus parâmetros. O que eu consegui foi imprimir todas as tag's sem ser uma âncora que direciona para o link da tag.

O código que fiz, foi:

<?php
   $categorias = get_terms('empreendimentos', array(
      'hide_empty' => false,
      'orderby' => 'menu_order'
   ));
   foreach($categorias as $categoria){
      $icone = get_field('icone', 'empreendimentos_'.$categoria->term_id);
      if(get_field('exibir_na_listagem', 'empreendimentos_'.$categoria->term_id)) {
?>

<a src=""><?php echo $categoria->name; ?></a>
<?php 
   }
      } 
?>

Desde já, grato!

19 respostas

Fala ai André, no tema que eu fiz para meu blog no wordpress eu consegui fazer a impressão das tags da seguinte maneira:

<aside class="o-sidebar">
    <label class="o-sidebar__title">Tags</label>
    <?php
        $tags = get_tags();
        foreach($tags as $tag) :
    ?>
    <a class="o-post__tag" href="<?=get_tag_link($tag->term_id);?>" role="link"><?=$tag->name;?></a>
    <?php
        endforeach
    ?>
</aside>

Arquivo completo com outras impressões pode ser encontrado aqui

Abraçooos

Matheus, valeu pela ajuda!

Mas, fazendo da sua forma, as tags nem apareceram na página =/

Você ja criou as tags ?

Da algum erro no console ?

Sim, elas já estavam criadas e os posts tbm com tags selecionadas.

O Console não retornou nenhum erro.

Segue código que testei:

<?php
   $categorias = get_tags();
   foreach ($categorias as $categoria) :
?>

<span class="label"><?php echo $categoria->name; ?></span>

<?php
   endforeach
?>

André para testar se esta conseguindo pegar as tags imprima o conteúdo do array:

<?php
    $categorias = get_tags();
    dd($categorias);
    ....
?>

Matheus, fiz este teste e na página apareceu "Array" e não o seu conteúdo.

Isso pode estar acontecendo por conta do uso do plugin Advanced Custom Fields PRO (https://www.advancedcustomfields.com/) ? Utilizo para facilitar a criar dos campos do Post Type.

Segue o código testado:

<div class="page_produto__top_left d-flex flex-column">
   <div class="page_produto__top_left d-flex flex-column">
      <div>
         <?php $categorias = get_tags();    ?>
         <span class="label"><?php echo $categorias; ?></span>
     </div>
   </div>
</div>

Alguém?

Tente usar as tags padrão do Wordpress, deve resolver o problema.

Eu usei a "get_terms()", como coloquei no tópico:

<?php
   $categorias = get_terms('empreendimentos', array(
      'hide_empty' => false,
      'orderby' => 'menu_order'
   ));
   foreach($categorias as $categoria){
      $icone = get_field('icone', 'empreendimentos_'.$categoria->term_id);
      if(get_field('exibir_na_listagem', 'empreendimentos_'.$categoria->term_id)) {
?>

<a src=""><?php echo $categoria->name; ?></a>
<?php 
   }
      } 
?>

Estava pensando, teria uma forma de imprimir a tag especifica do post usando o "get_terms"?

Desde, já grato!

Você consegue pegar todas as tags de uma post passando o ID dele:

$tags = wp_get_post_tags(get_the_ID());

Depois faça o foreach e imprima as tags.

Matheus,

Mais uma vez não imprimiu e no Console não traz nenhum erro. Estou postando aqui os meus códigos para tentarmos descobrir se o problema esta no algoritmo:

<div>
   <?php
      $categorias = wp_get_post_tags(get_the_ID());
      foreach($categorias as $categoria){
         $icone = get_field('icone', 'empreendimentos_'.$categoria->term_id);
           if(get_field('exibir_na_listagem', 'empreendimentos_'.$categoria->term_id)){
   ?>
   <span class="label"><?php echo $categoria->name; ?></span>
   <?php 
           }
       } 
   ?>
</div>

Lembrando que para o get_the_ID deve estar dentro do while do have_post

Talvez o problema seja novamente o plugin que você esta utilizando, pois todos os códigos que estou lhe passando no meu tema funciona.

O "get_the_ID" deve estar assim?

<?php
            if(have_posts()){
                while(have_posts()){ the_post(get_the_ID());
                }
            }
?>

Segue exemplo do meu tema:

<?php
    $tags = wp_get_post_tags(get_the_ID());
    foreach($tags as $tag) :
?>
 <a class="o-post__tag" href="<?=get_tag_link($tag->term_id);?>" role="link"><?=$tag->name;?></a>
<?php
    endforeach
?>

Lembrando: Esse código esta dentro do while que você postou acima.

Você pode ver ele funcionando no meu blog:

Matheus, novamente não rolou =/

Segue o teste da sua última solução:

<?php
   if (have_posts()) {
      while (have_posts()) {
         the_post();
?>
<div>
   <?php
      $tags = wp_get_post_tags(get_the_ID());
      foreach($tags as $tag) :
   ?>
   <a href="<?=get_tag_link($tag->term_id);?>" role="link"><?=$tag->name;?></a>
   <?php
      endforeach
   ?>
</div>
<?php
       }
   }
?>

Temos a opção de tentar usar este método que funciona no seu blog usando no código que funciona no meu? Você poderia mais uma vez me ajudar?

Como eu poderia usar o "wp_get_post_tags" e o "get_the_ID" dentro do meu código? Segue o código que comentei acima:

<?php
   $categorias = get_terms('empreendimentos', array(
      'hide_empty' => false,
      'orderby' => 'menu_order'
   ));
   foreach($categorias as $categoria){
      $icone = get_field('icone', 'empreendimentos_'.$categoria->term_id);
      if(get_field('exibir_na_listagem', 'empreendimentos_'.$categoria->term_id)) {
?>

<a src=""><?php echo $categoria->name; ?></a>
<?php 
   }
      } 
?>

Muito obrigado mais uma vez!

Alguém?

solução!

Desculpa a demora, esta corrido por aqui, acho que o melhor caminho seria você testar sem o plugin que esta usando.

Beleza,

Ficou corrido para mim tbm, vou testar e posto aqui.

Combinado.