NHANWEB

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.

Exit mobile version