WordPress slug问题与非拉丁字符

时间:2012-05-07 16:41:30

标签: wordpress

我在WP中使用固定链接:domain.com/category/post_name

问题是帖子名称有非拉丁字符,例如 chinese,hebrew和arabic 。因此它将它们编码为类似:%20%18%6b%20,因此它将每个符号的字符计为实际字符,最终得到的长度是截断一些非常短的段塞的3倍。

如何解决这个问题?或者至少如何延长长度限制?我试图将数据库字段“post_name”的长度从200扩展到500,但它仍然缩短了。

5 个答案:

答案 0 :(得分:2)

您可以通过应用post_name ...的过滤器来更改sanitize_title 简短的例子:

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注入等...

答案 1 :(得分:2)

Wordpress不应该像这样对你的帖子进行编码。我总是在标题和slug中使用utf8字符给客户。它工作正常。

您确定数据库表的字符集是utf8吗?如果是这样,是否已为任何列覆盖?另请查看wp-config.php define('DB_CHARSET', 'utf8');

我还会禁用所有插件并再次测试您的永久链接。也许你的一个插件正在拧紧你的后塞。

答案 2 :(得分:1)

这种情况也让我感到沮丧。

检查此插件。 Clean Trunks

  1. 您可以在插件配置页面上设置最大网址长度。 (默认值:35个字符。)
  2. 您还可以选择编辑提供的停用词列表。
  3. 希望这会有所帮助。干杯!!!

答案 3 :(得分:0)

对于非英文网址: 我使用带有fcgi的IIS,我在网上的不同位置找到了非英语slug的解决方案: 希伯来语:here 有关IIS7 URL重写和符号的更多信息:here 一般情况下,除了你需要添加到wp-config.php末尾的漂亮网址的IIS配置外:

    if (isset($_SERVER['UNENCODED_URL']))
$_SERVER['REQUEST_URI'] = $_SERVER['UNENCODED_URL'];

here您会找到有关UNENCODED_URL

的更多信息

答案 4 :(得分:-2)

为什么不在创建/保存永久链接时删除这些不良字符?

相关问题