Ошибка WordPress с нелатинскими символами

Я использую permalinks в WP как: domain.com/category/post_name

Проблема заключается в том, что имена сообщений имеют нелатинские символы, такие как китайский, иврит и арабский . Поэтому он кодирует их примерно так: %20%18%6b%20 поэтому он подсчитывает символ каждого символа как фактический символ, заканчивая в 3 раза больше длины, который усекает некоторые очень короткие пули.

Как это исправить? Или как можно увеличить длину? Я попытался расширить длину поля базы данных «post_name» от 200 до 500, но он все еще сокращается.

Такие постоянные, как http://example/שָׁלוֹם , фактически работают в моем WordPress 3.3. Могут быть улучшения remove_accents () для постоянных ссылок i18n .

Как заметил Шон и Стив,

  • убедитесь, что вы используете WordPress ≥ 3.3
  • убедитесь, что ваш файл .htaccess содержит правило, подобное RewriteRule . /index.php [L] RewriteRule . /index.php [L]
  • убедитесь, что ваша база данных закодирована в UTF-8 (и рассмотрите возможность преобразования в UTF-8, если нет).

[Мой оригинальный ответ следует, не так актуально сейчас, но, возможно, еще полезно:]

Видеть

Если ваши заголовки содержат некоторые символы ASCII, вы можете вырезать символы, отличные от ASCII, при создании сообщений .

Некоторые плагины могут помочь:

  • http://wordpress.org/extend/plugins/strings-sanitizer/

    Агрессивно дезинфицирует заголовки для чистых, удобных для SEO сообщений и имена файлов мультимедиа во время загрузки. Работает путем преобразования общих акцентированных символов UTF-8, а также нескольких специальных кириллических, ивритов, испанских и немецких персонажей.

  • http://wordpress.org/extend/plugins/universal-slugs/

    […], если вы говорите на языке, который использует атрибуты, которые не включены в английский алфавит, тогда вам либо приходится иметь дело с массивными, странно выглядящими постоянными ссылками или вручную обновлять каждый, когда вы пишете сообщение или страницу. […] Плагин также удалит из URL общие слова, такие как «и», «και», «το», «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 […] С подключенным китайским плагином PinYin, slug для нашего примера блога будет выглядеть так: /zhongwenpinyin

  • http://wordpress.org/extend/plugins/remove-utf-8-from-slug/

    удалить все UTF-8 из заголовка в постоянную ссылку

  • http://wordpress.org/extend/plugins/pinyin-seo/

    Преобразование китайских иероглифов в пиньинь.

Кроме того, некоторые из многоязычных плагинов могут автоматически переводить ваши пули на английский (и, следовательно, на латинские символы), но я не использовал их, поэтому я не уверен.

Помимо санировки, единственный способ продлить длину пули – это изменение кода 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