Suporte » Temas » Mais comentados de cada categoria

  • Resolvido Russo

    (@guiali)


    Olá pessoal

    tenho várias categorias e criei para algumas uma pagina com template… ou seja, se voce clica por exemplo em dicas, tenho uma pagina que exibe os ultimos posts da categoria dicas, so que em uma pagina com a aparencia quase igual a pagina inicial

    ja vi vários codigos que mostram como mostrar os posts mais comentados, mas nao consegui mostrar os posts mais comentados de cada categoria em um determinado periodo.
    por exemplo: os mais comentados em DICAS na ultima semana.

    entao ficaria assim, na página dicas, que exibe os posts da categoria dicas, mostaria dos posts dessa categoria, quais sao os mais comentados em um determinado período.
    obrigado

Visualizando 9 respostas - 1 até 9 (de um total de 9)
  • Criador do tópico Russo

    (@guiali)

    da uma luz ai gente…

    Fazer um loop com posts mais comentados existem várias formas, uma delas é

    $posts_lists = new WP_Query(array('orderby' => 'comment_count', 'posts_per_page' => 5, 'ignore_sticky_posts' => true)); 
    
    if ($posts_lists->have_posts()): while ($posts_lists->have_posts()): $posts_lists->the_post();
    
    conteúdo dos posts aqui
    
    <?php endwhile; endif; ?>

    O ignore_sticky_posts é para evitar posts fixos que em uma lista como essa não faz qualquer sentido deixar posts fixos sendo listados no topo deste lista.

    o problema é que vc quer restringir entre períodos e eu não sei como fazer e possivelmente quase ninguém sabe, porque existe a forma de fazer a query com posts por data, mas no seu caso elas irão mudar constantemente dependendo do dia em que vc está.

    Sinceramente não vejo um bom motivo para fazer isso, a não ser que vc dê a opção do usuário escolher, ver só os mais comentados entre determinado período e que também possa ver todos sem restrição de período.

    Criador do tópico Russo

    (@guiali)

    Obrigado Myst1010

    a questão do período é o seguinte…
    quero os mais comentados da semana; Tenho um post que já recebeu mais de 500 comentários, acontece que esse post tem um ano…
    so que essa semana esse posts não recebeu nenhum comentários e tenho outros que receberam três, quatro, cinco comentários.
    acontece que da forma tradicional, o mais comentado será sempre esse que tem mais 500 comentários.
    O que preciso é que apresente os mais comentados da semana, ou pelo menos os mais comentados entre os posts da semana.
    obrigado pela ajuda

    Agora eu entendi e concordo com vc. Eu não tinha pensado nessas questões.

    Parando para pensar aqui eu acho que tem como fazer isso que vc quer, vou fazer uns testes aqui e quando eu tiver um resultado positivo ou negativo eu te aviso.

    Não achei ainda um forma de fazer exatamente o que vc quer, mas essa medida já minimiza seu problema.

    No código que te passei anteriormente troque

    $posts_lists = new WP_Query(array('orderby' => 'comment_count', 'posts_per_page' => 5, 'ignore_sticky_posts' => true));
    $data = getdate();
    $posts_lists = new WP_Query(array('orderby' => 'comment_count', 'posts_per_page' => 5, 'ignore_sticky_posts' => true, 'year' => $data["year"], 'monthnum' => $data["mon"] ));

    Isso irá restringir a busca no período de um mês, então seus posts muito mais antigos que isso com grande quantidade de comentário não irá aparecer.

    Por semana eu ainda não descobri como fazer, mas acho que o código acima já ajuda.

    Resta saber como o código se comporta no início do mês.

    Criador do tópico Russo

    (@guiali)

    muito bom, é isso ai, obrigado,
    agora se a gente criar uma variavel que pegue a data do dia
    e depois la na query determinar que a busca deve ser menor que essa variavel em 7 dias…
    nao sei se é bem isso, mas o que voce fez ja ajudou bastante
    obrigado, vou continuar tentando limitar por uma semana

    o $data = getdate(); está pegando o dia.

    usando

    echo #data['mday']; retorna o dia atual.

    Para ver todos os parâmetros que estão retornando de $data vc pode usar

    var_dump($data);

    O problema vem agora, com o dia atual – 7 dias dá 4 até ai tudo ok, mas o que fazer quando o dia é menor que 7, porque gera um número negativo e não o dia 29, 30 ou coisa parecida.

    Outro problema é que tem meses que tem 29, 30 ou 31 dias e nestes casos pode também gerar problema.

    Entende agora a dificultade de se trabalhar com semanas?

    Criador do tópico Russo

    (@guiali)

    ah sim, desculpa, me expressei mal, quando disse a data menos 7 eu quis dizer caso a data retornasse um numero inteiro…
    sera que é possivel retornar um numero inteiro com uma data… como no excel, que uma data sempre tem um valor inteiro
    ai entao pegar esse numero diminuir 7 e depois converter em data novamente

    so um pensamento, nao sei se e possivel

    obrigado

Visualizando 9 respostas - 1 até 9 (de um total de 9)
  • O tópico ‘Mais comentados de cada categoria’ está fechado para novas respostas.