J'utilise le code suivant:
$tolettpe = "Sale";//default
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);
La valeur dans la base de données est 'Sale ||' et il n'y a pas de variables de chaîne de requête dans la demande.
Mais la requête ne renvoie aucun résultat.
Si j'utilise la valeur exacte et sans meta_compare, cela fonctionne.
Des idées comment faire ce travail?
meta_compare
Les valeurs possibles sont '!=', '>', '>=', '<', or '<='
. La valeur par défaut est '='
si vous voulez utiliser LIKE
, vous devez créer un meta_query, par exemple:
$tolettpe = "Sale";//default
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 requête générée place le terme de recherche entre deux signes%, il n'est donc pas nécessaire d'en ajouter dans le code.