J'essaie de rechercher dans WP_Query les données contenant l'expression "loi de Dalton" dans meta_query
. Ceci est une recherche AJAX
, et voici ce que je fais:
//in this case $_POST['query'] is the phrase "Dalton's Law"
$query = apply_filters( 'get_search_query', $_POST['query'] );
$query = esc_html( $query );
$guide_meta_args = array(
'post_type' => array( 'guide' ),
'post_status' => 'publish',
'ignore_sticky_posts' => true,
'posts_per_page' => 4,
'meta_query' => array(
array(
'key' => 'guide_raw_data',
'value' => $query,
'compare' => 'LIKE',
),
)
);
J'aurai du succès en tapant jusqu'à "Dalton", mais dès que j'arriverai à l'apostrophe, la recherche échouera. Quand je récupère le code javascript, je peux console.log
la chaîne de recherche et elle est dalton\'s
Il semble donc que l'encodage fonctionne correctement, mais WP_Query
n'aime pas l'apostrophe ... Quelqu'un a-t-il des suggestions? Merci beaucoup!
Essayez d’utiliser sanitize_text_field au lieu de esc_html
wp> $search_query = "Dalton's Law <br/>";
string(18) "Dalton's Law <br/>"
wp> $query = apply_filters( 'get_search_query', $search_query );
string(18) "Dalton's Law <br/>"
wp> $esc_html = esc_html( $query );
string(29) "Dalton's Law <br/>"
wp> $sanitized = sanitize_text_field( $query );
string(12) "Dalton's Law"
esc_html
devrait être utilisé pour échapper la sortie avant de passer dans HTML.