Me autocontesto (de nuevo, la proxima vez tardare más en preguntar para no SPAMEAR tanto), estaba todo OK salvo que no inclui las variables dentro de la funcion. Os pongo como ha quedado el codigo exactamente, de manera que funciona:
Código PHP:
<?php
function filter_where($where = '') {
$fecha = $_GET["fecha"];
$fecha_fin = $_GET["fecha_fin"];
$fecha = explode("/",$fecha);
$dia_inicio = $fecha[0];
$mes_inicio = $fecha[1];
$ano_inicio = $fecha[2];
$fecha_fin = explode("/",$fecha_fin);
$dia_fin = $fecha_fin[0];
$mes_fin = $fecha_fin[1];
$ano_fin = $fecha_fin[2];
$dia_fin+1;
$fecha_inicio = $ano_inicio.'-'.$mes_inicio.'-'.$dia_inicio;
$fecha_final = $ano_fin.'-'.$mes_fin.'-'.$dia_fin;
$where .= " AND post_date > '$fecha_inicio' AND post_date < '$fecha_final'";
return $where;
}
add_filter('posts_where', 'filter_where');
$query = new WP_Query( array( 'post_type' => 'post' ) );
while( $query->have_posts() ) : $query->the_post();
echo '<h2>'. get_the_title() .'</h2>';
endwhile;
?>