Suporte » Desenvolvendo com WordPress » Retornar post de uma categoria especifica.

  • Resolvido Erick Barcellos Muller

    (@erick-barcellos-muller)


    Bom pessoal, o negocio é seguinte. Estou criando um widget para barra lateral. Esse widget tem que reconhecer em qual categoria ele esta no momento, e a partir dai selecionar a subcategoria com o nome COLUNISTAS e exibir 5 posts dessa subcategoria.

    Hierarquia do Jornal online

    2013 –> Edição 175 –> Colunistas ( posts que estão na categoria colunista)

    Meu código esta buscando os SLUG e não o nome da categoria.
    O problema é que os slug mudam de acordo com as suas categorias pai (EX: clunista-edicao175) então não posso usa-lo.

    <?php
    $category = get_the_category();
    $catParID = $category[0]->category_parent;
    $catParent = get_cat_name($catParID);
    
    $myquery = new WP_Query('cat='.$catParID.'&category_name=colunistas&posts_per_page=5' );
    
    if ($myquery->have_posts()) : while ($myquery->have_posts()) : $myquery->the_post(); ?>
    
    " rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?>
    
    <?php endwhile; endif;
    
    wp_reset_query(); ?>
Visualizando 5 respostas - 1 até 5 (de um total de 5)
  • Não sei se entendi mas porque não obtém os posts mais recentes na categoria “Colunistas”? Isso automaticamente pega os posts da edição mais recente.

    Se quer mostrar os mais recentes ao visitar a subcategoria, pode obter o slug da categoria da queryatual, ex.:

    Ao visitar a página da subcategoria “Edição 173”, mostrar os posts mais recentes na “Edição 173”.

    Para isso, obtenha o slug da categoria atual que é retornada bem antes da página aparecer:

    <?php
    if (is_category( )) { //se for pagina de listagem de categoria...
      $cat = get_query_var('cat'); //pega info sobre a query atual, no caso dados da categoria
      $suacat = get_category ($cat);
      echo 'O slug dessa categoria: '. $suacat->slug;
     }
    ?>
    Criador do tópico Erick Barcellos Muller

    (@erick-barcellos-muller)

    Diana muito obrigado por sua ajuda. Porem eu preciso que a barra lateral exiba apenas os ultimos posts da sub-categoria colunista, mas sempre os referentes à edição na qual esta no momento.

    Ex: Estou na Edição 173, essa edição tem 2 sub-categorias 1)Educação 2)Colunistas… Quando eu entrar na sub-categoria Colunistas a barra lateral exibe os post da sub-categoria colunista referente a Edição 173.
    E se eu entra na sub-categoria Educação ele tem que continuar exibindo os post da sub-categoria Colunista (apenas os post desta sub-categoria pode ser mostrada na barra lateral).

    A barra lateral só pode exibir os post de colunistas e sempre da edição em que esta.

    Se poder me ajudar ficarei muito grato.

    Olá,

    Acho que entendi, testei assim: quando estiver na categoria, não importa se “Edição 173” ou “Colunistas”, vai mostrar os posts recentes dessa categoria, em “Edição 173” os mais recentes em “Edição 173”, em “Colunistas”, os mais recentes em “Colunistas”, não tem com misturar a menos que o post esteja em duas categorias mãe ao mesmo tempo, dai o posts aparece nas duas listagens.

    Então por exemplo na barra lateral adicionei:

    <?php if (is_category()) : ?>
          <ul>
          <?php
          $cat_atual = get_query_var('cat'); //pega info sobre a query atual, no caso dados da categoria
          $categoria = get_category ($cat_atual);
    
          $posts_recentes = new WP_Query(array(
              'posts_per_page' => 5,
              'category__in' => $categoria->cat_ID
              ));
    
              if ($posts_recentes->have_posts()): while ($posts_recentes->have_posts()) : $posts_recentes->the_post();
    
          ?>
                <li><a href="<?php the_permalink(); ?>" rel="bookmark" title="Ler <?php the_title(); ?>" ><?php the_title(); ?></a></li>
          <?php endwhile; else:?>
          </ul>
        <?php endif;?>
    <?php endif; ?>

    (Os posta não são atribuídos à Categoria mãe, ou seja, usam só a sub categoria, não testei de outro jeito).

    Para mostrar os posts recentes da categoria de um post que se está vendo (no single), é quase igual, mas precisa pegar a categoria do post atual (pega o ID e pega a categoria) e passa para 'category__in'.

    Criador do tópico Erick Barcellos Muller

    (@erick-barcellos-muller)

    Diana muito obrigado, Porem acabei fazendo de outra forma.

    <?php

    $category = get_the_category();
    $catParID = $category[0]->category_parent;
    $strSql = ” SELECT slug FROM $wpdb->terms term “;
    $strSql = $strSql.” INNER JOIN $wpdb->term_taxonomy rel ON term.term_id = rel.term_id “;
    $strSql = $strSql.” WHERE parent = “.$catParID;
    $strSql = $strSql.” AND term.name LIKE ‘colunistas’ “;
    $aryDados = $wpdb->get_row( $wpdb->prepare( $strSql), ARRAY_A );
    echo $aryDados[‘slug’];
    $myquery = new WP_Query(‘category_name=colunistas-edicao-172&posts_per_page=5’ );
    if ($myquery->have_posts()) : while ($myquery->have_posts()) : $myquery->the_post(); ?>
    ” rel=”bookmark” title=”<?php the_title(); ?>”><?php the_title(); ?>

    <?php endwhile; endif;
    wp_reset_query(); ?>

    Mas surgiu um problema, quando vou passar por parametro o ”$aryDados ” no
    $myquery = new WP_Query(‘category_name=’.BEM NESTE LOCAL.’&posts_per_page=5′ );

    Ele não filtra pelo slug, e aparece todos os post. E não apenas os dos colunistas.

    Criador do tópico Erick Barcellos Muller

    (@erick-barcellos-muller)

    RESOLVIDOOO..

    <?php

    $category = get_the_category();
    $catParID = $category[0]->category_parent;
    $strSql = ” SELECT slug FROM $wpdb->terms term “;
    $strSql = $strSql.” INNER JOIN $wpdb->term_taxonomy rel ON term.term_id = rel.term_id “;
    $strSql = $strSql.” WHERE parent = “.$catParID;
    $strSql = $strSql.” AND term.name LIKE ‘colunistas’ “;
    $aryDados = $wpdb->get_row( $wpdb->prepare( $strSql), ARRAY_A );
    echo $aryDados[‘slug’];

    $myquery = new WP_Query(‘category_name=’.$aryDados[‘slug’].’&posts_per_page=5′ );

    if ($myquery->have_posts()) : while ($myquery->have_posts()) : $myquery->the_post(); ?>

    ” rel=”bookmark” title=”<?php the_title(); ?>”><?php the_title(); ?>

    <?php endwhile; endif;

    wp_reset_query();
    ?>

    DIANA, MUITO OBRIGADO POR SUA AJUDA !

Visualizando 5 respostas - 1 até 5 (de um total de 5)
  • O tópico ‘Retornar post de uma categoria especifica.’ está fechado para novas respostas.