\w
correspond aux caractères du mot uniquement lorsque le mot char est [a-zA-Z0-9_]
et il n'inclut pas tous les caractères Unicode.
Remplacez votre règle par ceci :
RewriteRule ^post/([^/]+)/?$ single_post.php?blog_title=$1 [L,QSA]
[^/]+
correspondra à tout caractère qui n'est pas /
y compris les caractères Unicode également.
Vous pouvez également modifier un peu le code php :
function url_slug($str) {
$str = mb_strtolower(trim($str), 'UTF-8');
$str = preg_replace('/[^\pL\pN]+/u', ' ', $str);
$str = trim($str);
$str = preg_replace('/\h+/', '-', $str);
return $str;
}