问题描述

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

问题是邮件名称有中文,希伯来文和阿拉伯文字母的 non-latin 字符。所以它将它们编码成如下:%20%18%6b%20 因此它将每个符号的字符计算为一个实际的字符,最后是长度的 3 倍,它截断了一些非常短的 s 。。

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

最佳解决方案

http://example/שָׁלוֹם这样的固定链接实际上在我的 WordPress 3.3 中。可能是 remove_accents() improvements for i18n permalinks

作为肖恩& 史蒂夫说,

  • 确保使用 WordPress≥3.3

  • 确保您的.htaccess 文件包含类似于 RewriteRule . /index.php [L]的规则

  • 检查您的数据库是否为 UTF-8 编码 (如果不是,则为 consider converting to UTF-8) 。

[我的原始答案如下,现在并不相关,但可能仍然有用:]

看到

如果您的帖子标题包含一些 ASCII 字符,您可以使用 strip out non-ASCII characters when generating post slugs

一些插件可能有助于:

  • http://wordpress.org/extend/plugins/strings-sanitizer/在上传过程中积极消毒干净,SEO 友好的帖子和媒体文件名称。通过转换常见的突出 UTF-8 字符,以及一些特殊的西里尔字母,希伯来语,西班牙语和德文字符。

  • http://wordpress.org/extend/plugins/universal-slugs/ […] 如果您碰巧使用不包括在英文字母表中的特定语言,那么您必须承担大量,奇怪的固定链接,或者每当您写一篇文章或者一个页面时,手动更新每一个。 […] 插件还会从 URL 中删除常用单词,例如”and”,”και”,”το”,”το”,”the” 等,因为它们只是对 URL 长度做出贡献,而不添加任何含义或 SEO 值。

  • http://wordpress.org/extend/plugins/pinyin-slug/例如,当您发布包含以下标题的帖子时:”Chinese PinYin” WordPress 会自动为您的帖子分配一个长文件名,称为 post slug:/%e4%b8%ad%e6%96%87%e6%8b%bc %e9%9f%b3 […] 随着中文拼音插件的激活,我们的例子博客帖子将会如下所示:/zhongwenpinyin

  • http://wordpress.org/extend/plugins/remove-utf-8-from-slug/将所有 UTF-8 从标题移除到永久链接

  • http://wordpress.org/extend/plugins/pinyin-seo/将汉字转换为拼音固定链接。

此外,一些多语言插件可能会自动将您的 s to 翻译成英文 (因此 Latin-only 字符),但我没有使用任何一个,所以我不确定。

次佳解决方案

除了消毒之外,扩展插件长度的唯一方法是修改 WP 代码

文件 wp-includes/formatting.php

相应地更换 200

$title = utf8_uri_encode($title, 200);

在文件中:wp-includes/post.php 搜索 3 行:

$alt_post_name = substr( $slug, 0, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix";

这个问题会让每个 WP 更新都会关闭你

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。