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.

 23
Author: Angelica Santibanez, 2013-08-23

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'

        )
    )
);
 38
Author: Angelica Santibanez,
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.

 1
Author: dipak_pusti,
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