问题描述
我在 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。