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&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()?