問題描述

我在 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。