Il semble que l'opérateur LIKE de MySQL se comporte comme un opérateur =.
La requête MySQL suivante renvoie le résultat attendu (1 entrée):
$meta_key = '_locality';
$meta_value = 'The Hague';
$post_ids = $wpdb->get_col( $wpdb->prepare(
"
SELECT post_id
FROM $wpdb->postmeta
WHERE meta_key = %s
AND meta_value LIKE %s
",
$meta_key,
$meta_value
) );
Mais ce qui suit retourne un tableau vide:
$meta_key = '_locality';
$meta_value = 'The';
$post_ids = $wpdb->get_col( $wpdb->prepare(
"
SELECT post_id
FROM $wpdb->postmeta
WHERE meta_key = %s
AND meta_value LIKE %s
",
$meta_key,
$meta_value
) );
Qu'est-ce que je fais mal ici?
Essayez de remplacer:
AND meta_value LIKE %s
avec
AND meta_value LIKE '%%%s%%'
de sorte que votre SQL deviendra:
AND meta_value LIKE '%The%'
au lieu de:
AND meta_value LIKE 'The'