問題描述

我在 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

一些外掛可能有助於:

此外,一些多語言外掛可能會自動將您的 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。