Update: Acest defect a fost în sfârșit rezolvat și nu ar trebui să mai facă probleme în WordPress 3.1 (care ar trebui să apară prin decembrie, 2010).

Mi-ar place ca toate lucrurile să meargă, pur și simplu. Din păcate, asta nu se întâmplă aproape niciodată, mai ales când vine vorba de diacritice și mai ales dacă ne uităm la diacriticele românești.

Deoarece URL-urile cu diacritice cauzează diferite problem în motoarele de căutare și nu numai, WordPress le convertește automat.

Din păcate, literele ‘ț’și ‘ș’nu sunt convertite în ‘t’, respectiv ‘s’.

Există însă o soluție destul de simplă: În fișierul functions.php al temei de WordPress folosite de tine, adaugă următoarele linii de cod:

add_filter('wp_insert_post_data', 'caractere_problema');
function caractere_problema($data) {
	if ( empty($data['post_name']) )
		$name = $data['post_title'];
	else
		$name = $data['post_name'];
 
	$rep = array(
		'%c8%9b' => 't',
		'%c8%99' => 's',
		urldecode('%c8%9b') => 't',
		urldecode('%c8%99') => 's',
	);
 
	$new_name = str_replace(
		array_keys($rep),
		array_values($rep),
		$name
	);
 
	if ( $new_name == $name )
		return $data;
 
	$data['post_name'] = $new_name;
	return $data;
}

Asta e tot.

Reactions (2)

Comments (9)

  • redecs says:

    Spre deosebire de cele cu sedila, caracterele cu virgula nu sunt convertite pentru ca nu sunt folosite la scara larga (nu sunt afisate corect pe win xp ie6/7 parca).

    Nu e ok sa pui direct caracterele in functia de replace, pentru ca in functie de capabilitatile (sau mai bine zis defectele) editorului cu care faci modificarea s-ar putea sa apara probleme (encoding-ul fisierului, al browser-ului samd). E mai sigur sa pui codul caracterului si sa folosesti char();.

  • Ionut Staicu says:

    Şi ce se întâmplă la majuscule? :)

    • scribu says:

      În acest caz nu există majuscule: înainte de a fi apelată funcția noastră, toate literele din titlu sunt convertite în litere mici.

      Bună întrebare totuși.

  • Există cumva vreo posibilitate de a insera în functions.php a unei teme wordpress mobile (pentru device-uri mobile gen Iphone, Android, Nokia, Windows Mobile) a unei funcții care să curețe textul și să îl afișeze fără diacritice/glife bizare?

  • Excelent. Am folosit-o aici: http://m.businesscover.ro/

    Mii de multumiri. Stiu o multime de situri pe care le accesez de pe diferite mobile si fiecare are cite o buba la acest sector. Doar cei cu telefoane ultra-noi si performante aveau scapare.

  • Andrei says:

    Exista vreo modalitate pentru curata slug-urile pentru tag-uri/categorii in acelasi fel?

    • scribu says:

      Versiunea 3.1 de WordPress rezolvă problema și pentru tag-uri/categorii.

      Poți să aștepți versiunea finală sau poți să instalezi 3.1-RC2.

Respond / add a comment


Subscribe without commenting