meta consulta, cómo buscar usando tanto relación O & Y?
Resuelto: Ver respuesta abajo.
Tengo un tipo de post personalizado, LIBROS. Tiene varios campos personalizados, a saber; TÍTULO, AUTOR, GÉNERO, CALIFICACIÓN. ¿Cómo arreglo mi código meta_query a continuación para que solo los libros que tienen la palabra de búsqueda en los campos personalizados; título, autor, género; CON EXACTAMENTE la calificación especificada en mi formulario de búsqueda, se muestren en los resultados?
He hecho un formulario de búsqueda personalizado; un área de texto que buscará a través del título, autor y género; y un menú desplegable que buscará la calificación. El meta_query que hice a continuación solo busca a través del título, autor y género. Pero ahora estoy perplejo en cómo agregar el código para la calificación.
Así es como lo imaginé visualmente con la relación meta_query: (título O autor O género) Y clasificación
$args = array(
'relation' => 'OR',
array(
'key' => 'title',
'value' => $searchvalue,
'compare' => 'LIKE'
);
array(
'key' => 'author',
'value' => $searchvalue,
'compare' => 'LIKE'
);
array(
'key' => 'genre',
'value' => $searchvalue,
'compare' => 'LIKE'
);
),
array(
'relation' => 'AND',
array(
'key' => 'rating',
'value' => $ratingvalue,
'compare' => '=',
'type' => 'NUMERIC'
));
Agradecería enormemente su ayuda y consejo.
2 answers
Encontré la solución con algo de ayuda. El siguiente código funcionó perfectamente.
$args => array(
'relation' => 'AND',
array(
'relation' => 'OR',
array(
'key' => 'title',
'value' => $searchvalue,
'compare' => 'LIKE'
),
array(
'key' => 'author',
'value' => $searchvalue,
'compare' => 'LIKE'
),
array(
'key' => 'genre',
'value' => $searchvalue,
'compare' => 'LIKE'
)
),
array(
'key' => 'rating',
'value' => $ratingvalue,
'compare' => '=',
'type' => 'NUMERIC'
)
)
);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-24 15:28:51
Después de un poco de ensayo y error, encuentro una solución a esto. Esto es lógico, me refiero a que meta_query no soporta la matriz para el campo "clave", pero dando la matriz en" clave", estoy obteniendo la solución perfecta. Puede que parezca una locura, pero funciona como un encanto.
$args => array(
'relation' => 'AND',
array(
'key' => array('title','author','genre',),
'value' => $searchvalue,
'compare' => '='
),
array(
'key' => 'rating',
'value' => $ratingvalue,
'compare' => '=',
'type' => 'NUMERIC'
)
)
Solo recibe una advertencia para "trim()" ya que estamos pasando un array en lugar de una cadena. Suprima esa advertencia o agregue algo si encuentra una solución mejor.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-15 07:01:32