Muy buenas, en mi sitio hemos implementado unas votaciones para cada post por las que cada usuario otorga un determinado número de puntos al post que visualiza (si lo desea) y eso nos permite un poco hacer listarlos por popularidad. Hasta el momento no he tenido problema con los listados de popularidad por mes y por semana usando strtotime().
Pero en la portada quiero mostrar el más popular de ayer y el de hoy. Para el de hoy creo que no hay error, pero no sé como especificar la fecha de "ayer". Os pongo el código que tengo puesto ahora a ver si alguien puede orientarme.
Código:
<?php
$fdhoy = date('Y-m-d');
$fdayer = date('Y-m-d', strtotime( "-1 day", strtotime( $fdhoy ) ) );
$rows_hoy = $wpdb->get_results("SELECT DISTINCT(id_post), SUM(puntuacion), COUNT(id) FROM `pw_ratings` WHERE fecha >= '".$fdhoy."' GROUP BY id_post ORDER BY SUM(puntuacion) DESC LIMIT 1");
$id_post_hoy = $rows_hoy[0]->id_post;
$rows_ayer = $wpdb->get_results("SELECT DISTINCT(id_post), SUM(puntuacion), COUNT(id) FROM `pw_ratings` WHERE fecha >= '".$fdayer."' GROUP BY id_post ORDER BY SUM(puntuacion) DESC LIMIT 1");
$id_post_ayer = $rows_ayer[0]->id_post;
?>
Lo que más me inquieta de todo, es que a veces el post es el mismo en ambos casos, cosa dificil porque el select especifica la fecha en la que realizar la búsqueda. O incluso a veces se invierten de lugar, uno publicado hoy sale donde debería estar el de ayer y viceversa.. alguien me puede orientar un poco o sabe donde está el fallo? Muchas gracias de antemano