Suporte » Desenvolvendo com WordPress » Organizar Categorias

  • [Editado para clarificação]

    Prezados, não olhei se tem isso no codex, mais tenho a seguinte duvida:

    • Tenho um portal de notícias, onde tem 6 destaques e as categorias
    • Para ter os destaques,criei uma categoria chamada destaques
    • Com WP_Query obtenho e mostro os 6 últimos destaques

    até ai beleza.

    Vamos disser que a categoria destaque tem ID 2 .

    Quero exibir as ultimas noticias(posts) sendo que não mostre os destaques, ai eu puxo o Wp_Query

    $my_query = new WP_Query('orderby=date&showposts=15&cat=-2');

    O que preciso é puxar as ultimas noticias, menos os 6 ultimos destaques.

    Entendem?? Parece simples mais estou perdido.

Visualizando 15 respostas - 1 até 15 (de um total de 16)
  • se não me engano é só colocar cat=-2 no seu WP-Query, supondo que sua categoria destaque tenha o id 2 como vc disse.

    No showposts o -2 seria para que?
    Este argumento se não me engano só recebe -1 (Todos os Posts) ou número positivo (quantidade de posts), então se estou certo o -2 não está fazendo nada.

    Preciso excluir apenas os 6 ultimos, entende?

    Showposts: é a quantidade de posts a mostrar

    Em outras palavras, me trás os ultimos 15 posts, mas só leve em conta a categoria destaque depois de 6 posts.

    Acho que não se tem parâmetros para realizar este tipo de divisão que vc deseja em um único loop.

    Pode até ser que vc consiga fazer isso com um único loop, mas no momento não imagino como fazer.

    o mais fácil e digamos correto seria fazer um WP_Query com os posts da categoria 2 e um loop normal excluindo os posts desta categoria.

    Eu estendi mais o menos o que vc me disse, como eu quero os 15 ultimos, eu separaria em dois loops, tipo um loop com destaques de 3post e outro geral com 11posts shows.
    Mais é possivél eu começar o loop destaques depois dos 6 ultimos?

    Ou uma outras solução, teria como eu marca um post como destaques, sem usar categoria ??

    Mais é possivél eu começar o loop destaques depois dos 6 ultimos?

    Mas que raios de loop é esse que vc quer fazer? rsrsrsrs

    O loop normal e o WP_Query pode ser invertido, não precisa ser o WP_Query primeiro e o loop depois.

    Mas pelo que entendi da sua pergunta, vc quer colocar um grupo de posts de destaque no meio de outros posts normais?

    Ou uma outras solução, teria como eu marca um post como destaques, sem usar categoria ??

    Tem várias formas.
    Criando posts personalizados (post_custom), Tags, campos personalizados.

    Para o WP-Query tem uma campo de orderby que é meta_value_num, eu nunca usei, mas parece fazer o que vc quer.

    para mais detalhes veja
    http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters

    Mas que raios de loop é esse que vc quer fazer? rsrsrsrs

    è pq ná pimeira página eu nao quero repetir posts, tipo eu já tenho dois loops um que exibe 6 destaques em slide, e outro com as ultimas noticias. Mais as vezes aconteçe que um destaque também pode ser um noticia recente. Ai o no loop que exibe as 15 ultimas noticias postatas eu excluir o id do destaque (2), onde puxa tudo menos os destaques, porém não é isso que eu quero nesse loop de ultimas notícias, quero que ele puxe tudo menos as 6 ultimos destaques que já estão sendo exibido em slide.
    entende?

    Ai vc me sugeriu fszer 2 loops pra as 15 ultimas noticias, uma com destaques depois do sexto e outro geral, mais eu estou sem saber se isso é possivel?

    Entendi, então acho que vc precisa de um loop que pegue os primeiros posts e exclua do segundo, o código é algo semelhante a isso.

    Primeiro loop

    <?php $minha_consulta = new WP_Query('cat=2&showposts=6');
    if ($minha_consulta->have_posts()) : $minha_consulta->the_post();
    $sem_duplicidade[ ] = $post->ID; ?>
    
    <div class="slide">
    Html dos posts destaques
    </div>
    
    <?php endwhile; endif; ?>
    <?php if (have_posts()) : while (have_posts()) : the_post();
    if (!empty($sem_duplicidade)){
    if (in_array($post->ID, $sem_duplicidade)) continue;
    }
    update_post_caches($posts); ?>
    
    <div class="posts">
    Html dos posts normais
    </div>
    
    <?php endwhile; endif; ?>

    O primeiro loop pega os posts e guarda eles no array $sem_duplicidade[ ], depois no segundo loop ele faz o loop normal, mas removendo todos os posts que tem no array $sem_duplicidade[ ]

    A muito tempo fiz este loop com base nas informações do link abaixo
    http://codex.wordpress.org/The_Loop#Multiple_Loops_in_Action

    Nota:
    Tive problemas para in_array, pois se retornar vazio ele gera um erro.
    Ao remover o post do loop e sendo um post, por exemplo, da segunda página, esta página fica com um post a menos quando é exibida.

    Bom, espero que este loop ajude em alguma coisa, mas fique ciente que é um dos loops mais problemáticos. Eu só consegui deixá-lo perfeito dando uma opção extra no painel admin do tema para o administrador controlá-lo para não gerar erros.

    Myst1010, não entendi muito bem, é isso que o kleuton precisa?

    • Mostrar posts de destaques que estão em uma categoria Destaque.
    • No loop comum da página, não mostrar os mesmos posts que estão no Destaque.

    É isso? Se for, é só excluir a categoria “Destaque” do loop principal (nos contextos que aparecer), não precisa gerar um loop novo, mas modificar o atual.

    kleuton

    (@kleuton)

    Deixa eu passar o link, do site em teste para vcs Myst1010 e Daiana entenderem melhor:
    http://amanchete.com.br/

    eu ainda não fiz a dica do Myst1010, por estar sem tempo. po´rem já fiquei assutado já que é um loop problemático.

    Veja a imagen – http://imageshack.us/photo/my-images/7/exemplony.jpg/

    Myst1010

    (@myst1010)

    Diana, como ele disse é sim para remover os posts de destaque no loop normal, mas ele também quer que se um post for destaque e também for uma notícia, então este post também deve aparecer no loop normal.

    Só por este motivo eu sugeri o loop que mostrei acima, bom pelo menos foi o que entendi.

    kleuton realmente é um loop problemático, mas na sua home não tem navegação para a segunda página, então provavelmente irá gerar menos erro ou até mesmo nenhum se for bem configurado.

    Myst1010

    (@myst1010)

    Outra sugestão que me vem a cabeça agora e bem mais simples é fazer um loop para o slide com posts destaque e outro loop para os posts normais excluindo os posts destaques.

    Caso queira adicionar um post em ambos os lugares criar uma cópia do post destaque e classificá-lo com outra categoria.

    Então vc teria dois posts idênticos, mas um com a categoria destaque para ser exibido no slide e outro com qualquer categoria para ser exibido junto aos posts normais.

    Depois quando não for mais necessário bastaria excluir o post destaque e ficar só com o post normal.

    Simplificando:
    O trabalho que vc está tendo para criar este loop seria passado ao administrador do site que deveria conntolar o que é exibido no slide e nos posts normais, fazendo uma cópia do post e classificando ele com uma categoria diferente.
    Produziria o mesmo efeito que o loop que vc está tentando fazer.

    kleuton

    (@kleuton)

    fazendo uma cópia do post e classificando ele com uma categoria diferente

    Maís ai eu caio outra vez no que eu não quero, exibir a mesma máteria no slide e nas ultimas, se fizer cópia.

    Pergunta, tem como eu criar um loops depois do 6 sexto.
    pq pensa comigo eu acho ser mais fácil, exemplo:
    O Loop dos slides tem 6 posts, Ok Correto!
    O Loop das ultimas tem 15post, mais é apenas um único loop. Poderia eu dividir esse Loop das ultimas em 2 loops, sendo um com 3posts destaques e 12 com todas categorias. Onde o loop do 3post do destaques vinhesse a ser depois do 6º(sexto) post. Assim não repetiria.

    Exemplo em ordem:
    ||||| Loop Slides com Categoria destaques |||||
    1º Post em slide categoria destaque;
    2º Post em slide categoria destaque;
    … até o
    6º Post em slide categoria destaque;

    ||||| Loop Ultimos Posts todas as Categorias ||||
    7º Post categoria destaque;
    8º Post categoria destaque;
    9º Post categoria destaque;
    1º Post de todas as categorias;
    2º Post de todas as categorias;
    …. até o
    12º Post de todas as categorias;

    _____________________________________________________________
    Mais agora que vi, entrou água !!! rsrs
    pq no site também tenho outros loops como: Esposte, Local e Regional, Acontecimentos e Receitas, tods como categorias e quando estar em ultimas notícias repete também nesse loops, parece melhor deixar como estar ? 🙁
    Ou partir para $sem_duplicidade .

    Myst1010

    (@myst1010)

    Bom eu tinha respondido com base no que tinha entendido, mas pelo visto entendi errado.

    Infelizmente eu não vejo uma forma de fazer essa sua organização misturando posts destaque depois do 6ª post no loop de todas as
    categorias sem usar o $sem_duplicidade.

    Mesmo com o $sem_duplicidade não tem como organizar os posts destaques no início do segundo loop, tem como excluir os que já foram exibidos no slide, mas a ordem seria a de postagens e não por categoria como vc quer.

    Pra os loops de Esporte, Local e Regional basta que cada postagem tenha sua categoria e fazer um loop com essa categoria somente.

    Só uma nota:

    No caso de marcar posts, o uso de categorias é errado, isso se faz com tags. As categorias são para organizar o conteúdo, porque podem ter hierarquia. As tags servem para marcar posts, para ter controle maior do que se obter em queries diferenciadas como essa.

    O mais certo, é ter posts em suas categorias adequadas, marcando aqueles que devem ser destaque com uma tag.

    No loop secundário (barra lateral, rodapé, slides etc) cria-se um loop para obter posts, não importando a categoria, mas que tenham a tal tag.

    No loop principal, modifica-se o loop para não obter posts com a tag ‘destaque’.

    Categoria é uma coisa para organizar o conteúdo, as tags são para justamente marcá-lo de forma única.

Visualizando 15 respostas - 1 até 15 (de um total de 16)
  • O tópico ‘Organizar Categorias’ está fechado para novas respostas.