PHP replace diacritics
Romanian Slugs – Wordpress
Dacă la un moment dat aveţi nevoie de o metodă pentru a înlocui automat diacriticele româneşti sau orice alte diacritice (maghiare, germane, etc) cu caractere latine, “normale”, atunci veţi găsi aici informaţiile de care aveţi nevoie. Partea de cod de mai jos, o puteţi utiliza oriunde aveţi nevoie, eu am făcut-o pentru a înlocui diacriticele din URL-ul generat automat (slug) din titlu, de Wordpress.
Ştiu că a existat la un moment dat, un plugin creeat în acest sens, dacă bine-mi amintesc, parcă se numea “RO-Slug” sau ceva de genul. Ei bine, din nu ştiu ce motive, la mine n-a funcţionat. Şi n-am mai stat să sap prin el, să văd unde-i buba, iar la aceea vreme am renunţat la idee.
Doar că, din nou m-am lovit de problema slug-urilor şi m-am enervat. Aşa că, mi-am suflecat tacticos mânecile tricoului şi m-am apucat de treabă.
Iar rezultatul am să vi-l împărtăşesc şi vouă, dacă vă veţi afla la un moment dat în aceeaşi situaţie ca mine.
Ce aveţi de făcut? Iată …
Deschideţi “/wp-admin/includes/post.php“, iar aici căutaţi următoarea linie de cod:
1 | $return .= '<span id="editable-post-name-full">' . $post_name . "</span>\n"; |
Deasupra liniei de cod menţionată mai sus, adăugaţi asta:
1 2 | $diacritics_array = array( 'Š'=>'S', 'š'=>'s', 'Ž'=>'Z', 'ž'=>'z', 'À'=>'A', 'Á'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E', 'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss', 'à'=>'a', 'á'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'þ'=>'b', 'ÿ'=>'y', /* Diacritice romanesti */ 'ă'=>'a', 'Ă'=>'A', 'â'=>'a', 'Â'=>'A', 'ș'=>'s', 'ş'=>'s', 'Ș'=>'S', 'Ş'=>'S', 'ț'=>'t', 'ţ'=>'t', 'Ț'=>'T', 'Ţ'=>'T' ); $post_name = strtr( $post_name, $diacritics_array ); |
Salvaţi şi încărcaţi din nou fişierul pe server. Problem solved. Asta e tot.
Have fun …