如何在Woocommerce搜索中替换希腊字符



我有一个Wordpress Woocommerce网站。当我搜索我的网站的希腊语版本时,标签,类别,产品名称,描述等都是希腊语,搜索工作不太好,因为有音调字符(如ά, έ, ή, ί, ό等)

是用没有音调的字符(ά with α, έ with ε, ή with η等)替换或匹配带有音调的字符的任何方法。我更喜欢匹配而不是替换,但如果不可能,就让它们替换。

我有这个代码从另一个非wordpress网站女巫是替换音调字符与非音调字符

$s = $_GET["s"];
if (isset($s)) {
$sql = mysqli_query($con, "SELECT * FROM table WHERE word LIKE '%$s%' ORDER BY word");
while($RS = mysqli_fetch_array($sql)) {
$result = str_replace("ά","α",$RS['prword']);
$result = str_replace("έ","ε",$result);
$result = str_replace("ή","η",$result);
$result = str_replace("ί","ι",$result);
$result = str_replace("ό","ο",$result);
$result = str_replace("ύ","υ",$result);
$result = str_replace("ώ","ω",$result);
echo $result;
}
}

但是我不知道如何使用wordpress php钩子。

如果您想包含带有"α"而用户则按">"搜索。您需要将SQL排序规则更改为SQL_Latin1_General_CP1253_CI_AI. 这将返回列值包含'α'的所有行。例如:

SELECT * FROM table WHERE column LIKE '%ά%' COLLATE SQL_Latin1_General_CP1253_CI_AI

如果不能更改排序规则,可以使用REPLACE函数如下:

SELECT * FROM table WHERE REPLACE(column, 'ά', 'α') LIKE '%ά%'

但是如果您的列是LONGTEXT类型,则不能使用REPLACE。在这种情况下,您需要使用CAST将列转换为VARCHAR。例如:

SELECT * FROM table WHERE REPLACE(CAST(column AS VARCHAR(MAX)), '%ά%', '%α%') LIKE '%ά%'

最新更新