He encontrado una forma, aunque no es la solución que buscaba (más bien es una chapuza), pero funciona. Así que la comento por si a alguien le puede servir.
Al final lo que he hecho ha sido usar la misma consulta que propuso el-brujo, en la que me devuelve todos los object_id que tienen alguno de los term_taxonomy_id que le pasamos a través del formulario de filtro. Y para hacer que solo muestre los que coinciden todos los parámetros, he creado una función que me devuelva cierto si ese object_id tiene todos esos parámetros (en lugar de cualquier de ellos, que es lo que me devolvía la consulta SQL).
Entonces queda así:
Y la función:
Al final lo que he hecho ha sido usar la misma consulta que propuso el-brujo, en la que me devuelve todos los object_id que tienen alguno de los term_taxonomy_id que le pasamos a través del formulario de filtro. Y para hacer que solo muestre los que coinciden todos los parámetros, he creado una función que me devuelva cierto si ese object_id tiene todos esos parámetros (en lugar de cualquier de ellos, que es lo que me devolvía la consulta SQL).
Entonces queda así:
Código (php) [Seleccionar]
$parametres = "'".$_GET['edat']."','".$_GET['pes']."','".$_GET['estatura']."'";
$sql = "SELECT DISTINCT wp.post_title, wp.ID FROM wp_posts wp, wp_term_relationships wtr WHERE wp.post_parent = '".$tipus[$i]."' AND wp.post_type = 'page' AND wp.ID = wtr.object_id AND wtr.term_taxonomy_id IN ($parametres)";
$sql_pagines_tipus = mysql_query($sql);
while ( $pagina = mysql_fetch_array($sql_pagines_tipus) ) {
if ( mostrarPagina($pagina['ID'], $_GET['edat'], $_GET['pes'], $_GET['estatura']) == true ) { ?>
<li><?php echo $pagina['post_title'] ?><input type="checkbox" name="comparar[]" value="<?php echo $pagina['ID']; ?>"></li>
<?php }
}
Y la función:
Código (php) [Seleccionar]
function mostrarPagina($pagina_id, $edat, $pes, $estatura)
{
if ( $pes == '' ) {
$trobat_pes = true;
}else{
$trobat_pes = false;
}
if ( $edat == '' ) {
$trobat_edat = true;
}else{
$trobat_edat = false;
}
if ( $estatura == '' ) {
$trobat_estatura = true;
}else{
$trobat_estatura = false;
}
$sql_tags = mysql_query("SELECT term_taxonomy_id FROM wp_term_relationships WHERE object_id = '$pagina_id'");
while ( $row = mysql_fetch_array($sql_tags) ) {
if ( $row[0] == $edat && $trobat_edat == false ) { $trobat_edat = true;}
if ( $row[0] == $estatura && $trobat_estatura == false ) { $trobat_estatura = true; }
if ( $row[0] == $pes && $trobat_pes == false ) { $trobat_pes = true; }
}
if ( $trobat_edat && $trobat_estatura && $trobat_pes) {
return true;
}else{
return false;
}
}