Ma requête de recherche par défaut:
example.com/search/?search_text=keyword
Ce que je veux le transformer:
example.com/search/keyword
J'ai donc ajouté ceci à mon function.php
add_rewrite_rule('^search/([^/]*)?','index.php?pagename=search&search_text=$matches[1]','top');
Fonctionne bien pour l’alphabet anglais, mais chaque fois que je cherche un mot clé dans ma langue, comme ceci:
example.com/search/kırmızı
Le titre de la page devient: k%C4%B1rm%C4%B1z%C4%B1
et aucun résultat n'est renvoyé.
Faites-moi savoir si vous avez besoin de plus de détails.
Ceci est dû à l'encodage. Je suppose que votre page de recherche contient une fonction que vous obtenez et que vous utilisez search_text
dans ce modèle. Vous devez décoder l'URL avant de le faire.
La fonction urldecode()
correspond à ce que vous recherchez. Votre chaîne est également encodée en UTF-8, voici donc ce dont vous aurez besoin:
$string = utf8_decode( urldecode( $_GET['search_text'] ) );
Vous pouvez maintenant utiliser la chaîne décodée dans votre recherche.