Suporte » Plugins » Exibir notícias por ordem de “importância” (pra dar destaque)

  • Resolvido pedropapito

    (@pedropapito)


    Procuro um plugin (acredito que isso deve ser feito atraves de plugin, e tambem acredito que exista) que faça com que as notícias sejam exibidas por ordem de “importância” (setada pelo editor), ao invés de serem exibidas em ordem de publicação. Alguém dá uma luz, por favor?

Visualizando 13 respostas - 16 até 28 (de um total de 28)
  • Surgiu uma dúvida!

    Digamos que serão exibidos 4 posts.

    O primeiro e o segundo serão exibidos os que tiverem como parâmetro meta_key=destaque&meta_value=1 (campo personalizado “destaque” com o valor “1” – na verdade o valor “1” não significa nada, é só para não deixar o campo personalizado vazio para que ele seja validado).

    Mas o terceiro e o quarto serão exibidos os mais recentes, desde que não possuam um meta_key=destaque. Como fazer isso?

    Procurei no Codex e não encontrei.

    Moderador Leo Baiano

    (@leobaiano)

    Cria outro loop.

    Sim, mas como eu defino esse loop? Pois eu preciso informar ao loop pra não exibir posts que tenham a meta_key=detaque. E como faço isso?

    Moderador Leo Baiano

    (@leobaiano)

    Copia o ID dos posts no loop anterior em uma variavel e da um exclude no novo loop.

    sem querer ser chato, mas… como faz isso?

    Dê uma olhada para ver se funciona.

    Abraço.

    <?
    global $post;
    $myposts = get_posts('numberposts=3&category_name=eventos&order=DESC');
    
    		?>
    		<h3 style="margin-bottom:4px">Eventos</h3>
              <ul class="m borda">
            <?
            	foreach($myposts as $post) :
    				setup_postdata($post);
            ?>
    			<li>
                  <h3><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3>
                  <p><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_content();  ?></a></p>
                </li>
              <?php endforeach; ?>
    	      </ul>

    ainda tá confuso =(
    Não entendi…

    Moderador Leo Baiano

    (@leobaiano)

    No primeiro loop cria uma variavel pra guardar o ID dos posts que serão exibidos e então no segundo loop, onde vai chamar as outras noticias, você utiliza o parâmetro exclude para excluir os ID’s guardados na variavel anterior.

    o código que possuo é este:

    <?php $recent = new WP_Query("cat=policia&meta_key=destaque&meta_value=1&showposts=2"); while($recent->have_posts()) : $recent->the_post() ?>
    <a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a>
    <?php endwhile; ?>
    <?php $recent = new WP_Query("cat=policia&showposts=2";  while($recent->have_posts()) : $recent->the_post();?>
    <li><a href="<?php the_permalink(); ?>" rel="bookmark">
    <?php the_title(); ?></a></li>
    <?php endwhile; ?>

    Onde:
    – Na primeira query ta chamando os 2 posts mais recentes da categoria “policia” que possuam o campo personalizado “destaque” com o valor “1”.
    – Na segunda query ta chamando os 2 posts mais recentes da categoria “policia”. Aqui preciso fazer com que não liste os posts que foram listados na primeira query.

    Com base neste código, podem me ajudar?

    Obrigado a todos 😉

    Moderador Leo Baiano

    (@leobaiano)

    Parceiro, pra fazer modificações avançadas como esta que você quer é necessário pesquisa e estudo, eu te falei a lógica de como fazer pra que você pudesse pesquisar no codex e encontrar a forma de fazer a alteração no código, mas enfim fui lá e pesquisei no seu lugar e abaixo segue um código pra você testar ai, tenta entender a lógica porque se meu código não funcionar é só pesquisar como fazer a lógica acontecer e corrigir o código abaixo.

    Então, a primeira linha do seu código da inicio a um loop que vai exibir todos os posts de acordo com os parametros que você definiu na pesquisa. O loop acaba na linha <?php endwhile; ?>

    Então, antes do loop acabar você cria uma variavel que vai guardar o ID de todos os posts exibidos no loop.

    A linha da segunda query da inicio ao segundo loop e deve trazer os posts de acordo com o que você definir, então lá você coloca o parametro post__not_in = $variavel que faz com que os posts com os ID definidos não apareçam no loop. Vê se deu pra entender e qualquer coisa pergunta, mas antes de perguntar tenta entender e qualquer coisa procura no codex do WP.

    <?php $recent = new WP_Query("cat=policia&meta_key=destaque&meta_value=1&showposts=2"); while($recent->have_posts()) : $recent->the_post() ?>
    <a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a>
    <?php
    //pega os IDs dos posts exibidos no loop
    $id_excluir = $id_excluir.",".the_ID();
    ?>
    <?php endwhile; ?>
    <?php $recent = new WP_Query("cat=policia&showposts=2&post__not_in=".$id_excluir.";  while($recent->have_posts()) : $recent->the_post();?>
    <li><a href="<?php the_permalink(); ?>" rel="bookmark">
    <?php the_title(); ?></a></li>
    <?php endwhile; ?>

    leobaiano,
    muito obrigado pela ajuda e pela paciência, embora esteja equivocado sobre eu não pesquisar a respeito e fazer estudos. Eu tinha captado a lógica, mas não conseguia executar, só retornava erros. Estou há dias tentando fazer isto funcionar, e só recorri ao fórum quando todas as maneiras tentadas, pesquisadas e estudadas, não funcionaram.

    Consegui solucionar a dúvida em questão, com o código do truque de número 5 deste artigo: http://www.wordpress-love.com/2010/02/10-truques-para-wordpress-que-lhe-vao-facilitar-a-vida

    Problema solucionado. Muito obrigado a todos vocês =D

    Caso, por algum motivo, o link expire, reproduzo-o abaixo para quem precisar:

    UTILIZAR MÚLTIPLOS LOOPS SEM DUPLICAÇÃO

    Se você necessitar de quebrar o carregamento de artigos em diferentes secções do seu blog (como acontece nas Magazines), no qual você necessita de carregar um número fixo de artigos, e mais tarde os restantes, você pode usar o truque senti para chamar múltiplos loops.

    Eis o código para chamar o primeiro loop com os 5 artigos mais recentes:

    <?php
    query_posts('showposts=5');
    $ids = array();
    while (have_posts()) : the_post();
    $ids[] = get_the_ID();
    the_title();
    the_content();
    endwhile;
    ?>

    E o código para chamar o segundo loop, que irá excluir esses 5 artigos e carregar apenas os restantes:

    <?php
    query_posts(array('post__not_in' => $ids));
    while (have_posts()) : the_post();
    the_title();
    the_content();
    endwhile;
    ?>

    Este código carrega basicamente os artigos pelo ID, excluido aqueles que estão englobados no $ids[] do primeiro loop.

    Moderador Leo Baiano

    (@leobaiano)

    embora esteja equivocado sobre eu não pesquisar a respeito e fazer estudos

    Não quis dizer isso, mas é que você poderia ter falado pra gente sobre os erros e dificuldades que encontrou quando tentou escrever um script de acordo com a solução sugerida, mas ao invés disso você colava seu código e pedia pra gente reescrever ele de uma forma que funcionasse.

    Bom, isso não vem muito ao caso, desculpa se de alguma forma ofendi.

    Pedro, leia o código do tutorial que você seguiu e veja o código que eu te sugeri acima, é praticamente a mesma coisa, a unica diferença é que no tutorial ele salva os IDs em uma variavel do tipo array e no meu eu salvei elas com uma virgula, mas fiz isso porque a forma como você estava montando a query_post exigia isso.

    Enfim, bom que resolveu seu problema!

Visualizando 13 respostas - 16 até 28 (de um total de 28)
  • O tópico ‘Exibir notícias por ordem de “importância” (pra dar destaque)’ está fechado para novas respostas.