Bom, o caso é que o tutorial mostrado não irá funcionar da forma mencionada. Vamos analisar o código mostrado naquele artigo:<?php $artigos = get_posts('numberposts=7'); foreach($artigos as $post) : ?>
<?php if (get_post_meta($post->ID, destaque, TRUE) == 1) { ?>
<p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p>
<?php } ?>
<?php endforeach; ?>

Conforme explicado, este código seleciona os últimos 7 artigos publicados (get_posts(’numberposts=7′)); caso o artigo contenha o campo personalizado “destaque” com valor “1″, ele será impresso na tela. Os campos personalizados também mostrei como inserir e utilizar no post anterior sobre a lista de destaques.

O problema é que só dizemos para o Wordpress selecionar os últimos 7 posts… e se nenhum desses estiver marcado como destaque? A nossa lista ficará em branco! Mas não é isso que queremos; o objetivo é deixar sempre a vista esta lista, na sidebar por exemplo, como os posts que julgamos ser mais interessante para o leitor (ou qualquer outro motivo).

Precisamos fazer alguma alterações. O no código ficaria assim:

<?php $artigos = get_posts(orderby=ID&order=DESC);
$lim == 0; foreach($artigos as $post) : ?>
<?php if (get_post_meta($post->ID, destaque, TRUE) == 1) { ?>
<p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p>
<?php } ?>
<?php
$lim++;
if ($lim==7) { break; }
endforeach; ?>

Ok… mas o quê mudei?

  • alterei os parâmetros de get_post(). Agora sim, ele estará retornando os últimos posts publicados. O padrão dela é retornar os posts em ordem alfabética de título e ascendente;
  • adicionei uma variável chamada $lim iniciada em “0″. Ela vai ser nosso contador no script;
  • a parte de verificação do campo personalizado continua igual. Ele somente irá exibir na tela os posts que contenham “detaque” com valor “1″. Qualquer outro valor, ou a ausência dele não será afetado;
  • incrementei a variável $lim ao final da impressão do post, para termos o controle de quantos posts já foram mostrados;
  • acrescentei um if que verifica a quantidade de posts. Se for igual a “7″, sai do loop (através do break)

Se a intenção é mostrar mais do que sete posts, simplesmente altere o valor no if. Se quiser mostrar todos os posts em destaques, independente da quantidade, retire a linha if ($lim==7) { break; }

Eu verifiquei esse meu estúpido erro após aplicar na prática. Acontece que usando esse código ele irá varrer todos os registros para os posts, até encontrar o break. Se não for usá-lo, então de fato todos os registros serão afetados.

Be happy ;^)

Leia também