Suporte » Desenvolvendo com WordPress » Dúvida: Loops na Index

  • Olá pessoal, boa tarde! Minha dúvida está mais relacionada ao método como estou fazendo do que com o como estou fazendo. Seguinte:

    Na minha index.php coloquei dois “get_template_part”, uma para chamar o arquivo “loop.php” e outro para chamar o arquivo “ultimos.php”. Ok.

    No arquivo “loop.php” só configurei uma excerpt e um tumb do último post. Nas configurações de leitura pedi para exibir apenas um post.

    Já no “ultimos.php” gostaria de colocar um resumo dos últimos 4 post exceto o que já está no “loop.php”, ou seja, do penúltimo em diante.

    Minha dúvida: Como as configurações de leitura não irá afetar o segundo loop (ultimos.php)?

    Espero que possam me ajudar, até!

Visualizando 13 respostas - 1 até 13 (de um total de 13)
  • Bixo, eu não entendi quase nada que tu falaste. Mas pelo que eu entendi…
    não é mais fácil usar query_posts para isso do que fazer tantos arquivos?

    Nossa, eu devo estar mesmo falando grego! Desculpe! É simples, são dois loops apenas, só estão em arquivos separados.

    Eu conseguiria separar apenas o último post dos demais com query_posts? Tipo, o último recebe um estilo e os demais outros?

    Obrigado pela atenção velho, Abç

    Bom dia Angelo.

    Melhor você usar get_posts() do que usar o query_posts() senão pode ocorrer algum conflito com a query padrão do template. Uma alternativa também é a classe WP_Query(), mas acredito que get_posts() dê conta bem do recado, sem precisar usar uma classe… =)

    http://codex.wordpress.org/Template_Tags/get_posts

    Veja os exemplos no link acima… Use o parametro “numberposts” para definir que quer apenas 1 post. Este será sempre o último inserido.

    Beijokas
    Drika

    Olá Miriam, bom dia! Muito obrigado pela dica. consegui entender esse loop. só uma dúvida:

    E para mostrar a última postagem registrada (com destaque maior e estilo diferente), eu deveria criar outro loop ou “incrementar” este?

    Ps. A intenção é que na home mostre o último post em DESTAQUE (com título, resumo e foto)e mais alguns (em ordem de postagem por data) somente com o título.

    Obrigadão. ATT

    Bem, acho que este index do seu site você terá que fazer sem o uso do get_template_part() …

    Você vai ter dois loops:

    $posts_destaque = get_posts( array('category' => 1, 'numberposts' => 1) );
    $pid = array();
    if( $posts_destaque ):
    foreach( $posts_destaque as $post ) : setup_postdata($post);
    	echo '<li><a href="'.get_permalink().'">'. get_the_title() .'</a></li>';
    
            $pid[] = $post->ID; //guardo o ID dos posts que não quero que se repitam.
    
    endforeach;
    endif;

    SEGUNDO LOOP:

    <?php query_posts( array('post__not_in' => $pid) );?>
    
    <?php the_title(); ?>
    
    <?php the_excerpt(); ?>
    
    etc...
    
    <?php wp_reset_query();?>

    Algo mais ou menos assim … Não testei, mas… =)

    Miriam, qual é a vantagem de se usar o get_posts no lugar do query_posts?
    Eu uso query_posts pra tudo, já tive uns conflitos mas que resolvi mesmo usando query_posts.

    Percebo que o get_posts tem uma estrutura mais difícil para quem não programa em PHP.

    Olá Petrus!

    query_posts() deve ser usado somente se você deseja modificar a query principal da página, por exemplo, modificar a quantidade de “posts_per_page”, adicionar o parametro “paged”, etc…

    get_posts() é similar e aceita quase todos os parametros de query_posts(), mas ao invés de termos um objeto, ele retorna um array. Pode ser usado em qualquer lugar do template sem medo

    WP_Query() é uma classe poderosa, onde você pode criar seu proprio objeto, um pouquinho mais complexa, e também super segura de se usar em qualquer lugar do template. Aceita os mesmos parametros de query_posts()

    Então, devemos usar ou get_posts() ou WP_Query() nos demais loops, porque o loop principal do template usa o query_posts()…

    =)

    Pessoal, muito obrigado pelos esclarecimentos! já vi que trabalhar com WP sem saber OOP é quase impossível. Mas estou muito interessado, tenho alguns projetos de mídia e educação para emplantar em um colégio e quero usar o WP para isso (no layout do site da escola).

    Vou fazendo todos os experimentos que vocês sugerem aí, até entender!

    Vlw mesmo!

    Miriam, quanto ao seu último código. Ele exebiu isso:

    Post “Sem Categoria” *(esse exibe como link)
    Post “Sem Categoria”

    Este post é apenas para não ter catogoria!
    etc…

    Ou seja, exibiu o mesmo post.

    Angelo, bom dia.

    Você mudou o ID da categoria na query?

    $posts_destaque = get_posts( array('category' => X, 'numberposts' => 1) );

    onde “X” é o ID da categoria que tu quer pegar….

    Olá Miriam, bom dia para você também!

    Então, eu não mudei, usei o código do jeito que você postou ali em cima.

    Eu deveria ter mudado? Outro detalhe, você usando o “category” em “1” ou “X” (como vc exemplificou aí em cima, ele não vai buscar posts apenas em uma determinada categoria? Att

    Sim, você deveria ter mudado. O código que passei foi apenas um exemplo.

    Você quer listar os posts de uma determinada categoria, não quer? Então, precisa informar ao WP, o ID desta categoria. Sabe como achar o ID?

    Lá no painel de controle, onde você cadastra as categorias, você passando o mouse sobre as categorias listadas, vai ver na barra de status uma URL … Nesta URL, visualize a variavel “tag_ID” … pegue o numero atribuido a esta variavel..

    algo como:
    http://seusite.com.br/wp-admin/edit-tags.php?action=edit&taxonomy=category&amp;tag_ID=5&post_type=post

    Olá Miriam.
    Estou escrevendo um código com as mesmas características que você sugeriu ao Angelo… veja se você pode me ajudar numa questão:

    No meu caso, o primeiro loop se encontra no destaque-index.php

    $query_destaque = new WP_Query('cat=-48&posts_per_page=1');
    while ($query_destaque->have_posts()) : $query_destaque->the_post();
    $id_destaque_video = $post->ID;
    /* continuação do código */

    e o segundo está no content.php

    <?php
    var_dump ($id_destaque_video);
    while ( $query_content->have_posts() ) : $query_content->the_post();?>
    <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    	<div class="thumb">
    /* continuação do código */

    Estou incluindo os dois arquivos através do get_template_part() no index.php.
    acionei o var_dump para saber se a variável poderia ser trabalhada, porém retornou NULL. Se eu dou um echo ainda no destaque-index.php, ou seja, no arquivo onde eu criei a variável eu recebo o valor certo.

    O que acontece? O get_template_part() não é como o include? Como eu posso trabalhar com variáveis entre arquivos diferentes usando o get_template_part()?

Visualizando 13 respostas - 1 até 13 (de um total de 13)
  • O tópico ‘Dúvida: Loops na Index’ está fechado para novas respostas.