Vấn đề sên Wordpress với các ký tự không phải là tiếng Latin


7

Tôi đang sử dụng permalinks trong WP như: domain.com/category/post_name

Vấn đề là tên bài đăng có các ký tự không phải là tiếng Latin như tiếng Trung, tiếng hebrew và tiếng Ả Rập . Vì vậy, nó mã hóa chúng thành một cái gì đó như: %20%18%6b%20do đó, nó tính mỗi nhân vật của biểu tượng là một nhân vật thực tế, kết thúc với chiều dài gấp 3 lần mà nó cắt một số con sên rất ngắn.

Làm thế nào để khắc phục điều đó? Hoặc làm thế nào để mở rộng giới hạn chiều dài ít nhất? Tôi đã cố gắng kéo dài độ dài của trường cơ sở dữ liệu "post_name" từ 200 lên 500, nhưng nó vẫn bị cắt ngắn.


Có lẽ plugin này có thể hữu ích như điểm khởi đầu để giải quyết vấn đề: wordpress.org/extend/plugins/mzslugs-translator - Tôi không đăng bài này dưới dạng câu trả lời khi tôi chưa kiểm tra hoặc phân tích mã (ít nhất là không một plugin cũ).
brasofilo

1
bạn đã sử dụng phiên bản wordpress nào và bạn có gì trên htaccess. Các permalinks ký tự 2 byte sẽ hoạt động tốt trên bản mới nhất.
Sean Lee

1
Đảm bảo rằng máy chủ, php và cơ sở dữ liệu của bạn đều được cấu hình để sử dụng mã hóa UTF8.
Steve Buzonas

Câu trả lời:


8

Permalinks giống như http://example/שָׁלוֹםđang thực sự hoạt động trong WordPress 3.3 của tôi. Có thể là các cải tiến remove_accents () cho permalinks i18n .

Như Sean & Steve đã lưu ý,

  • đảm bảo bạn đang sử dụng WordPress 3.3
  • đảm bảo tệp .htaccess của bạn chứa quy tắc tương tự như RewriteRule . /index.php [L]
  • kiểm tra xem cơ sở dữ liệu của bạn có được mã hóa UTF-8 không (và xem xét chuyển đổi sang UTF-8 nếu không).

[Câu trả lời ban đầu của tôi theo sau, không liên quan lắm nhưng có lẽ vẫn hữu ích:]

Xem

Nếu tiêu đề bài đăng của bạn chứa một số ký tự ASCII, bạn có thể loại bỏ các ký tự không phải ASCII khi tạo sên bài .

Một số plugin có thể giúp:

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

    Nghiêm túc vệ sinh các tiêu đề cho các bài đăng sạch sẽ, thân thiện với SEO và tên tệp phương tiện trong quá trình tải lên. Hoạt động bằng cách chuyển đổi các ký tự UTF-8 có dấu phổ biến, cũng như một vài ký tự đặc biệt cyrillic, hebrew, Tây Ban Nha và Đức.

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

    [Vách] nếu bạn tình cờ nói một ngôn ngữ sử dụng characted không được bao gồm trong bảng chữ cái tiếng Anh, thì bạn phải chịu những permalinks khổng lồ, trông kỳ quặc hoặc cập nhật thủ công mỗi khi bạn viết một bài đăng hoặc một trang. [Vắc] Plugin cũng sẽ xóa các từ phổ biến như "và", "κiated", "τ", "the" v.v. khỏi các URL, vì chúng chỉ đơn giản đóng góp vào độ dài URL mà không thêm bất cứ điều gì vào nghĩa hoặc Giá trị SEO.

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

    Ví dụ: khi bạn xuất bản một bài đăng có tiêu đề như thế này: Wordpress "Trung Quốc PinYin" tự động gán một tên tệp dài cho bài đăng của bạn, được gọi là slug bài đăng: /%e4%b8%ad%e6%96%87%e6%8b%bc%e9%9f%b3[mật] Với plugin PinYin Trung Quốc được kích hoạt, sên cho bài đăng trên blog ví dụ của chúng tôi sẽ trông như thế này:/zhongwenpinyin

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

    xóa tất cả UTF-8 khỏi tiêu đề để permalink

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

    Chuyển đổi các ký tự tiếng Trung sang Permalinks.

Ngoài ra, một số plugin đa ngôn ngữ có thể tự động dịch sên của bạn sang tiếng Anh (và do đó là các ký tự chỉ có tiếng Latinh), nhưng tôi không sử dụng bất kỳ trình cắm nào trong số đó, vì vậy tôi không chắc chắn.


2

Ngoài việc vệ sinh, cách duy nhất để kéo dài độ dài của sên là sửa đổi mã WP

trong tập tin wp-includes/formatting.php:

thay thế cho 200phù hợp:

$title = utf8_uri_encode($title, 200);

trong tệp: wp-includes/post.phptìm kiếm 3 dòng với:

$alt_post_name = substr( $slug, 0, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix";

Vấn đề sẽ săn lùng bạn với mỗi bản cập nhật WP

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.