带有非拉丁字符的Wordpress slug问题
我在WP中使用permalinks作为:带有非拉丁字符的Wordpress slug问题,wordpress,Wordpress,我在WP中使用permalinks作为:domain.com/category/post\u name 问题是邮政名称有非拉丁字符,如中文、希伯来文和阿拉伯文。因此,它将它们编码为:%20%18%6b%20,因此它将每个符号的字符作为实际字符进行计数,最终长度是截断一些非常短的段塞的3倍 如何解决这个问题?或者至少如何延长长度限制?我曾尝试将数据库字段“post_name”的长度从200扩展到500,但它仍然缩短了。这是一种常见的情况,也让我感到沮丧 检查这个插件 您可以在插件配置页面上设置最大
domain.com/category/post\u name
问题是邮政名称有非拉丁字符,如中文、希伯来文和阿拉伯文。因此,它将它们编码为:%20%18%6b%20
,因此它将每个符号的字符作为实际字符进行计数,最终长度是截断一些非常短的段塞的3倍
如何解决这个问题?或者至少如何延长长度限制?我曾尝试将数据库字段“post_name”的长度从200扩展到500,但它仍然缩短了。这是一种常见的情况,也让我感到沮丧 检查这个插件
希望这会有所帮助。干杯 为什么不在创建/保存永久链接时删除这些坏字符 您可以通过应用
sanitize\u title
的过滤器来更改post\u name
。简短示例:
add_filter('sanitize_title', 'sanitize_title_custom', 10, 3);
function sanitize_title_custom($title, $raw_title, $context){
// do some proccesing with title or raw_title
// assign new result to $title ($title = str_replace(" ","-", $raw_title);// as example )
return $title;
}
但是,要小心。。。不良的消毒可能会带来安全风险。。。sql注入等等。Wordpress不应该这样编码你的帖子。对于客户端,我总是在标题和段塞中使用utf8字符。它很好用 是否确定数据库表的字符集为utf8?如果是,是否已为任何列重写了它?还要检查
wp config.php
中的define('DB_CHARSET','utf8')代码>
我还会禁用任何插件并再次测试你的永久链接。也许你的一个插件正在和你的帖子混在一起。对于非英语URL:
我将IIS与fcgi结合使用,并在web上的不同位置找到了非英语slug的解决方案:
希伯来语:
有关IIS7 URL重写和符号的更多信息:
通常,除了需要添加到wp-config.php末尾的pretty url的IIS配置外:
if (isset($_SERVER['UNENCODED_URL']))
$_SERVER['REQUEST_URI'] = $_SERVER['UNENCODED_URL'];
你会发现关于未编码的\u URL的更多信息你在哪个HTTP服务器上运行Wordpress?@eggyal我目前在运行Apache的XAMPP上运行它。我已经安装了它,但它没有帮助,WP仍然会截断slug,我猜这个插件不是为了延长长度限制,而是为了进一步缩短它。非常感谢@Oleg,这非常有帮助!