Wordpress变音不敏感搜索

Wordpress变音不敏感搜索,wordpress,Wordpress,我是wordpress的新手,找不到一个好方法让我的网站上的搜索不敏感 我试图通过将搜索查询排序规则更改为utf8\U unicode\U ci来完成它,这确实可以满足我的需要。。。问题是,我不知道如何修改搜索查询以添加后缀COLLATE'utf8\u unicode\u ci'——我想正确的方法是创建钩子 我试过: pre_get_posts-它只允许我更改不知道排序规则的查询对象(我不想更改全局对象以避免不良副作用) posts\u请求-我不知道如何检测正确的上下文(仅从站点搜索功能进行搜索

我是wordpress的新手,找不到一个好方法让我的网站上的搜索不敏感

我试图通过将搜索查询排序规则更改为utf8\U unicode\U ci来完成它,这确实可以满足我的需要。。。问题是,我不知道如何修改搜索查询以添加后缀
COLLATE'utf8\u unicode\u ci'
——我想正确的方法是创建
钩子

我试过:

pre_get_posts
-它只允许我更改不知道排序规则的查询对象(我不想更改全局对象以避免不良副作用)

posts\u请求
-我不知道如何检测正确的上下文(仅从站点搜索功能进行搜索查询)。我看到有人声称,
posts\u request
hook接受第二个参数并放入父$query,但在我的安装过程中,它始终返回
NULL

需要帮忙吗

编辑

我在太简单的测试用例中发现了所需的SQL语句,现在我发现,我需要在每个表达式后面分别添加
COLLATE'utf8\u unicode\u ci'

例如:

选择*
来自wp_的职位
其中发布标题,如“%some%”
或者像“%thing%”这样的post_标题

需要重写为:

选择*
来自wp_的职位
其中,post_标题(如“%some%”)与“utf8\u unicode\u ci”比较

或者像“%thing%”这样的post_标题整理为“utf8_unicode_ci”

尝试添加pre\u get\u posts筛选器以修改查询,例如:

add_action('pre_get_posts','alter_query');
function alter_query($query) {
    $query-> set('orderby' , $query->get('orderby') . ' COLLATE utf8_unicode_ci' );
 }
编辑:在执行上述操作后,WordPress似乎会重新解析orderby,从而删除排序

有一个WoordPress posts_search_orderby过滤器,它似乎可以满足您的需要

add_filter('posts_search_orderby', 'alter_query', 20, 2);
function alter_query($orderby, $query) {
    return $orderby . ' COLLATE utf8_unicode_ci';
}

不幸的是,它没有帮助。。。
COLLATE
语句未显示在服务器日志中。。。你知道怎么回事吗?为了弄清楚/它被调用,它将排序规则存储到order by语句中,但在它之后的某个时候它会丢失…谢谢你,你帮了很多忙,但它并不能解决我的问题-请参阅更新的问题。对不起,是我的错!我解决了我的问题,连接到
posts\u search
并执行一些
str\u replace
magic。