Xử lý dấu tiếng Việt trong URL WordPress
Theo mặc định bình thường WordPress rất “ngu” phần Tiếng Việt. Do đó, Permalink được tạo ra thường chứa các kí tự tiếng Việt kiểu nửa ta nữa tây rất khó chịu. Đã vậy nó còn mã hóa thành vào chục cái dấu % nữa chứ. Nhân vừa tiến hành việc này tôi gửi đến cái hướng dẫn sửa liên kết bài viết (Permalink) trong wordpress để nó hiểu tiếng Việt của ta tốt hơn. Tôi hi vọng bài này giúp được những bạn xài WordPress bớt đi chút khó khăn khi cứ phải ngồi chỉnh sửa cái Permalink mỗi khi viết bài.Lục tung cái code của WordPress (hiện www.nhanweb.com đang sử dụng phiên bản 2.8.2) tôi tìm được cái hàm sanitize_title_with_dashes() nằm trong file wp-includes/formatting.php . Đây là file write lại cái Permalink của WordPress. Cũng chính vì ở đây việc xử lý tiếng Việt còn hạn chế nên cái Permalink của chúng ta nhìn không đẹp mặt lắm. Tôi thử sửa cái hàm đó lại như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | function sanitize_title_with_dashes($title) { $url_pattern = array('`&(amp;|#)?[a-z0-9]+;`i', '`[^a-z0-9]`i'); $title = htmlentities($title, ENT_COMPAT, 'utf-8'); $title = preg_replace( '`&([a-z]+)(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i', "\\1", $title ); $title = preg_replace('`\[.*\]`U','',$title); $title = strtolower(trim($title, '-')); $title = preg_replace("/(à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ)/", 'a', $title); $title = preg_replace("/(è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ)/", 'e', $title); $title = preg_replace("/(ì|í|ị|ỉ|ĩ)/", 'i', $title); $title = preg_replace("/(ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ)/", 'o', $title); $title = preg_replace("/(ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ)/", 'u', $title); $title = preg_replace("/(ỳ|ý|ỵ|ỷ|ỹ)/", 'y', $title); $title = preg_replace("/(đ)/", 'd', $title); $title = preg_replace($url_pattern , '-', $title); return $title; } |
OK! Tôi thử và nó chạy tốt. Bạn có thể sử dụng hàm này của tôi nếu muốn. Nếu bạn sợ việc update phiên bản làm mất hàm này thì bạn có thể download plugin này (cái này tôi viết riêng ra cho dễ): Permalink_Friendly_for_Vietnamese.zip
Chúc các bạn thành công.
Bài có liên quan
16 Comments to “Xử lý dấu tiếng Việt trong URL WordPress”
Post comment
Bài viết mới
- PHP & JQuery Photo Upload and Crop
- Thông báo thảo luận tháng 08/2010
- “Đùa” với wordpress theme
- Top 10 Web safe fonts
- Mời hợp tác kiếm tiền (designer và coder)
- Vừa bán hàng, vừa dọa khách
- Ra mắt WordPress Plugin RobotVN
- Bạn làm gì khi FaceBook sụp đổ ?
- Thêm target blank và nofollow cho liên kết trong blog
- Interview – giải pháp phát triển website chuyên ngành
Ý kiến
- Nguyễn Duy Nhân on phpThumb – tạo thumbnail khi trình bày bài viết
- David on phpThumb – tạo thumbnail khi trình bày bài viết
- Nguyễn Duy Nhân on Xin đừng ghép tội oan cho xe gắn máy
- Nguyễn Duy Nhân on PHP & JQuery Photo Upload and Crop
- CaoSonBao on Xin đừng ghép tội oan cho xe gắn máy
Tag
Who's Online
- 0 Members.
- 9 Guests.


cui` wa vay cung khoe
Mỗi người mỗi cách nghĩ, mỗi người mỗi hành động.Bạn thích thì xài, không thích thì thôi có ai ép đâu.
Have a nice day
Cảm ơn bạn đã chia sẻ
CÁi này cũng giống của bác Quang Anh Do, nhưng bài toán đặt ra là nó có tự fix các bài viết cũ hay không hay lại xảy ra tình trang Not found và chỉ áp dụng cho các bài viết mới sau khi đã cài plugin này?
Bạn QAD đã viết cái plugin để làm việc này từ bản 2.3.1 :|
http://onetruebrace.com/2007/11/19/nicer-permalinks-for-vietnamese/
@ Định Nguyễn:
Mình có xem qua plugin của bác QAD, thuật toán bỏ dấu của bác QAD phải kết hợp song song với hàm sanitize_title_with_dashes() mới phát huy được hiệu quả (ví dụ loại các kí tự đặt biệt như @, “, ‘ ….) mình nghĩ nên tách riêng xử lý sẽ tốt hơn.
Vấn đề xử lý các Permalink cũ mình nghĩ là chắc không dễ dàng vì các Permalink được lưu trong database chứ ko phải được tạo ra lúc load. Phương án khả thi nhất có lẽ là dùng 1 script update lại tất cả các link đã có trước đây thành link mới (không dấu)
Cám ơn link của bạn.
[...] với người dùng WordPress, các bạn có thể sử dụng plug-in Redirection Permanent Link để chuyến hướng các [...]
Bài viết rất hữu ích. Cảm ơn bạn.
[...] viết xong phần Backend cho nó thôi , đang kẹt ở vụ Cache vì sau Plugin đơn giản Permalink_Friendly_for_Vietnamese thì tới bây giờ mới là Plugin chính thức mình [...]
Hi,
Tôi vừa viết 1 bài về vấn đề tương tự nhưng cách xử lý chuỗi tiếng Việt lại sử dụng JavaScript:
http://shinichi.microsync.net/blog/bo-sung-chuc-nang-tao-tieu-de-khong-dau-trong-wordpress/
Theo nhận định chủ quan của tôi thì hiệu quả đạt 100%.
Thân
Cám ơn bạn đã share link

Không biết function của bạn đã hoàn thiện chưa và chừng nào có thể share ra để mọi người cùng tham khảo nhỉ
Mình cũng thử kiểm tra thử plugin mình sử dụng và thấy plugin hoạt động bình thường, với đoạn text bạn dùng để thử nghiệm như ở bài viết tại Blog bạn.
Screenshot:http://img97.imageshack.us/img97/9330/demoh.jpg
Có lẽ mình cần kiểm tra thêm 1 số trường hợp nữa xem sao
Mình nóng lòng được học hỏi từ bạn
Hay tuyệt
Bản update mới nhất. Nhân test xem nhé
http://ontoprank.com/pffv.rar
[...] WP, tôi cũng có tham khảo một số kinh nghiệm về vấn đề này. Ví dụ như tại blog của bạn Nguyễn Duy Nhân. Tuy nhiên cách này vẫn chuyển đổi thành một chuỗi không dấu chưa hoàn [...]
[...] Permalink friendly for vietnamese [...]
[...] khi bài viết này được cập nhật.Tiếp tục con đường phát triển của Plugin Permalink Friendly for Vietnamese nhằm giải quyết những khó khăn trong việc sử dụng tiếng Việt trên blog [...]