5

我在 WP 中使用永久链接:domain.com/category/post_name

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

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

4

5 回答 5

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

于 2012-05-11T13:32:23.033 回答
2

Wordpress 不应该像那样对您的帖子进行编码。我一直在为客户使用 utf8 字符和标题。它工作正常。

你确定你的数据库表的字符集是 utf8 吗?如果是这样,它是否被任何列覆盖?还要wp-config.php检查define('DB_CHARSET', 'utf8');

我还将禁用任何插件并再次测试您的永久链接。也许你的一个插件正在搞砸你的帖子。

于 2012-05-11T17:43:40.873 回答
1

这是一个常见的情况,也让我感到沮丧。

检查这个插件。清洁树干

  1. 您可以在插件配置页面上设置最大 url 长度。(默认:35 个字符。)
  2. 您还可以选择编辑提供的停用词列表。

希望这会有所帮助。干杯!!!

于 2012-05-10T16:08:55.583 回答
0

对于非英语 URL:我正在使用带有 fcgi 的 IIS,并且我在网络上的不同位置找到了非英语 slug 的解决方案:对于希伯来语: 这里 了解有关 IIS7 URL 重写和符号的更多信息:这里 通常除了 IIS 配置漂亮您需要添加到 wp-config.php 末尾的 url:

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

在这里您会找到更多关于 UNENCODED_URL

于 2015-04-02T22:52:36.667 回答
-2

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

于 2012-05-11T01:17:35.403 回答