我想制作一个土耳其语的WP网站,在webbrowser和WP的URL字段中显示正确的土耳其语字母字符,而不是英语字母字符。我已经试过了,但没有成功。所发生的不是这些土耳其语字符:“乔克·古泽尔·比尔·萨克斯·亚普姆·亚普姆·亚普米斯拉尔·努姆·兹德基勒”,而是显示了他们的“近亲”英语字符,如:“科克·古泽尔·比尔·萨西·亚普米斯拉尔·奥努穆兹德基勒”。
我不知道为什么会发生这种情况,以及我如何在WP的URL中获得这些正确的土耳其字符。有人有主意吗?
我现在是如何做到的:我手动安装了WP并编辑了WP配置。php文件输入我的数据库值并输入以下值:
数据库字符集:我将其保留为utf8,因此:
define(\'DB_CHARSET\', \'utf8\');
DB\\U COLLATE:我读到数据库排序规则通常应为空,但土耳其语网站除外,这些网站需要有:“utf8\\U Turkish\\U ci”。因此:
define(\'DB_COLLATE\', \'utf8_turkish_ci\');
所以我已经在一个土耳其语网站上做了所有这些,但是URL字段仍然没有显示正确的土耳其语字母,而是显示最接近的英语字母。
所以我想知道:是什么决定了哪些字母的字符会显示在URL字段中?
我需要做什么才能完成这件事?
SO网友:MikeNGarrett
功能[sanitize_title()][1]
生成段塞。此函数随后调用remove_accents()
. 此函数位于/wp-includes/formatting.php
并包括所有字符转换的映射(仅供参考)。
这仅在的“保存”上下文中发生sanitize_title()
这是默认值。
不需要删除重音符号,但它有助于确保posts段塞只包含某些字符。要取代它,您必须构建自己的remove_accents()
包括土耳其语特殊字符。
Assuming you\'ve done this and called it my_remove_accents()
, let\'s move forward.
function my_sanitize_title( $title, $raw_title ) {
return my_remove_accents( sanitize_title_with_dashes( $raw_title ) );
}
add_filter( \'sanitize_title\', \'my_sanitize_title\', 99, 2 );
sanitize_title_with_dashes()
已添加到
sanitize_title
筛选而不是从
sanitize_title()
作用调用此函数不会替换任何重音字符。