get_posts con meta_compare='LIKE' no funciona - Solución
Estoy usando el siguiente código:
$tolettpe = "Venta"; //valor por defecto
if($_REQUEST['tolettype']) $tolettpe = $_REQUEST['tolettype'];
else if($_REQUEST['srch_type']) $tolettpe = $_REQUEST['srch_type'];
$args = array(
'numberposts' => $latestcount,
'category' => $catidstr,
'meta_key' => 'property_type',
'meta_compare' => 'LIKE',
'meta_value' => $tolettpe.'%'
);
$post_content = get_posts($args);
El valor en la base de datos es 'Venta||' y no hay variables en la cadena de consulta de la solicitud.
Pero la consulta no devuelve resultados.
Si uso el valor exacto y no meta_compare, funciona.
¿Alguna idea de cómo hacer que esto funcione?
meta_compare Los valores posibles son '!=', '>', '>=', '<', o '<='. El valor predeterminado es '='
Si deseas utilizar LIKE necesitas crear un meta_query, por ejemplo:
$tolettpe = "Sale"; //valor por defecto
if($_REQUEST['tolettype']) $tolettpe = $_REQUEST['tolettype'];
else if($_REQUEST['srch_type']) $tolettpe = $_REQUEST['srch_type'];
$args = array(
'numberposts' => $latestcount,
'category' => $catidstr,
'meta_query' => array(
array(
'key' => 'property_type',
'value' => $tolettpe,
'compare' => 'LIKE'
)
)
);
$posts = get_posts($args);
La consulta generada coloca el término de búsqueda entre dos signos %, por lo que no es necesario agregarlos en el código.
gracias, lo he intentado pero no obtengo ningún resultado. ¿Hay alguna manera de imprimir la consulta que se está generando para poder ejecutarla directamente en la base de datos y depurarla?
inarilo
vale, encontré la respuesta a eso http://codex.wordpress.org/Editing_wp-config.php#Save_queries_for_analysis
inarilo