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