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?

vale, encontré la respuesta a eso http://codex.wordpress.org/Editing_wp-config.php#Save_queries_for_analysis
