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