Suporte » Desenvolvendo com WordPress » Exibir últimos posts com formatos diferentes

  • Resolvido Martinssays

    (@martinssays)


    Olá, galera.

    Estou criando um portal em wordpress e me deparei com uma dúvida que é vital para a realização do projeto.

    É possível mostrar os últimos posts de uma determinada categoria com certos posts com um layout diferente? Para mostrar os últimos posts de uma determinada categoria eu uso o seguinte código:

    <?php $recent = new WP_Query("cat=7&showposts=12"); while($recent->have_posts()) : $recent->the_post();?>
    <?php the_title(); ?>
    <?php endwhile; ?>

    O problema nesse código é que ele só irá mostrar os últimos posts de uma categoria no mesmo formato, e eu precisaria que ele mostrasse o último post com um layout maior, o penúltimo com um layout menor, e os outros em um formato igual.

    Eu tentei utilizar o código duas vezes na home, para a mesma categoria, mas infelizmente os posts acabam se repetindo na home, um com layout diferente do outro. Teria alguma coisa para eu configurar em um código para exibir os últimos, e no outro para exibir os últimos, mas não exibir determinado post?

    Aguardo ajuda, obrigado.

Visualizando 13 respostas - 1 até 13 (de um total de 13)
  • Dá pra ser feito desta forma

    <?php
    $recent = new WP_Query("cat=7&showposts=12");
    if ($recent->have_posts()) :
    $class = 0;  //Variável para testar a contagem
    while ($recent->have_posts()) : $recent->the_post();
    $class++; //Inclementa a variável
    
    $tipo = ($class > 3) ? "ultimos-posts" : "primeiros-posts"; ?>
    
    <div class="post <?php echo $tipo; ?>"
    <h2><?php the_title(); ?></h2>
    
    <?php endwhile; ?>

    resultado:

    <div class="post primeiros-posts">
    <h2>Título post 1</h2>
    </div>
    <div class="post primeiros-posts">
    <h2>Título post 2</h2>
    </div>
    <div class="post primeiros-posts">
    <h2>Título post 3</h2>
    </div>
    
    <div class="post ultimos-posts">
    <h2>Título post 4</h2>
    </div>
    <div class="post ultimos-posts">
    <h2>Título post 5</h2>
    </div>

    Agora é só personalizar com css

    Myst1010

    Primeiramente, obrigado pela resposta.

    No caso eu iria precisar usar thumbnails em alguns posts, e não iria usar em outros. Fazer isso é no caso impossível, né?

    Nadinha impossível, basta fazer assim

    <?php
    $recent = new WP_Query("cat=7&showposts=12");
    if ($recent->have_posts()) :
    $class = 0;  //Variável para testar a contagem
    while ($recent->have_posts()) : $recent->the_post();
    $class++; //Inclementa a variável
    ?>
    <?php if($class > 3){?>
    
    <!-- Posts com thumbnails-->
    <div class="post primeiros-posts">
      <h2><?php the_title(); ?></h2>
      <?php mostra_thumbnails_exemplo(); ?>
    </div>
    
    <?php } else { ?>
    
    <!-- Posts sem thumbnails-->
    <div class="post ultimos-posts">
      <h2><?php the_title(); ?></h2>
    </div>
    
    <?php } ?>
    
    <?php endwhile; ?>

    Putz, errei feio no código anterior, o htmlo ficou todo errado rsrsr.

    Poxa, muitíssimo obrigado pela pronta ajuda.

    Eu irei testar o código e já retorno para você se pegou, além de te mostrar o website!

    Obrigado mesmo.

    Grande abraço!

    Então, olha só, eu usei o código e o site me retornou isso:

    Parse error: syntax error, unexpected $end in /home/tvtotalk/public_html/wp-content/themes/tvtotalk/index.php on line 267

    Os códigos anteriores foram só exemplos, imaginei que vc fosse usá-los como base para o seu código, mas de qualquer forma o erro foi meu pela pressa em responder e por não ter testado o código.

    Neste ultimo código o erro acontece porque eu adicionei uma verificação e não a encerrei.

    para corrigir veja.

    depois de <?php endwhile; ?> adicione <?php endif; ?>

    Myst1010

    Opa, mais uma vez obrigado.

    Testei o código e ele funcionou perfeitamente, está bem legal! Eu só tenho mais uma pequena dúvida, se não for pedir demais:

    Como eu poderia duplicar isso para exibir três formatos diferentes? É que os posts serão um grande, quatro médios e o resto com pequenas headlines, sem título.

    Se pudesse me ajudar em só mais isso.

    Obrigado, mais uma vez.

    Acho que ficaria assim

    <?php
    $recent = new WP_Query("cat=7&showposts=12");
    if ($recent->have_posts()) :
    $post_cont = 0;  //Variável para testar a contagem
    while ($recent->have_posts()) : $recent->the_post();
    $post_cont++; //Inclementa a variável
    ?>
    <?php if($post_cont == 1){?>
    
    <!-- Posts com thumbnails-->
    <div class="post primeiros-grande">
      <h2><?php the_title(); ?></h2>
      <?php mostra_thumbnails_exemplo(); ?>
    </div>
    
    <?php } elseif($post_cont < 6) { ?>
    
    <!-- Posts sem thumbnails-->
    <div class="post posts-medios">
      <h2><?php the_title(); ?></h2>
      Adicione o que quiser para os post de 2 a 5 criando 4 posts
    </div>
    
    <?php }else{ ?>
    
    <!-- Posts headlines-->
    <div class="post posts-headlines">
      Adicione aqui o conteúdo que quiser para os posts headlines
    </div>
    
    <?php } ?>
    <?php endwhile; ?>

    Troquei a variável para um nome mais coerente neste caso e adicionei a verificação que precisava.

    Se tudo estiver correto irá apresentar as diferenças que vc queria, caso a contagem esteja errada basta mudar os números, mas acho que estão certas.

    Agora cabe a vc adicionar e personalizar o conteúdo de cada tipo de post.

    Fala, Myst1010.

    O código funcionou muito bem e agora falta pouco para terminar o meu portal. Porém me deparei com outro problema e espero que você, ou outra pessoa aqui possa me ajudar.

    Eu tenho a ideia de usar a mesma dinâmica dos três formatos de layouts dos posts, na página category.php e queria saber como posso adaptar esse seu código para que ele funcione puxando os últimos posts da categoria acessada, ao invés de puxar os posts de uma categoria especifica.

    Poderia me dar essa mão?

    Me desculpe pela noobisse, já vi como fazer.

    Em breve te envio o site para você dar uma olhada.

    Obrigado por tudo!

    Cadê? quero ver como ficou.

    Fala, Myst1010.

    Ainda tá em testes, mas dá um preview: http://tvtotalk.com/

    Rapaz está ficando bacana pra caramba heim.

    Nos posts vc só deixou a imagem e o título, acho que um pequeno resumo do conteúdo pode ficar ainda melhor.
    É questão de testar pra ver como fica.

    Mas parabéns pelo trabalho.

Visualizando 13 respostas - 1 até 13 (de um total de 13)
  • O tópico ‘Exibir últimos posts com formatos diferentes’ está fechado para novas respostas.