21
2009
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:
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.

Tác giả:







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 [...]
[...] 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 [...]
[...] Xử lý dấu tiếng Việt trong URL WordPress 25-09-2010 | admin | 0 phản hồi » Xử lý dấu tiếng Việt trong URL WordPress [...]
[...] URL Friendly For Vietnamese # [...]
[...] 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 [...]
[...] Vietnamese Permalink của mình cũng gặp một số trục trặc nhất định trong khâu xử lý tiếng Việt. Và kết quả là plugin Vietnamese Permalink phiên bản 1.1.0 đã ra đời trên cơ sở [...]
Sau khi gặp trục trặc với phiên bản mới nhất, giờ mình lại quay lại với phiên bản này
Mình cứ install plugin của VietCoding về là xài ngon lành, keke.
Anh ơi cho em hỏi tiêu đề chữ tiếng việt có dấu sao nó lại hiển thị bậy ? Khác phúc cái này ntn vậy anh?