У мене вже є стаття на сайті, де я розповідав, як за допомогою плагінів вирішити це завдання, а також як правильно налаштувати формування посилань на WordPress за допомогою стандартних налаштувань - Постійні посилання на латиниці або ЛЗУ – Людино Зрозумілий Урл WordPress.
У тому плагіні я пропонував встановлювати плагін RusToLat. Зараз він вже довго не оновлювався і застарів. Можна знайти аналоги типу Cyr to Lat або якщо ви використовуєте плагін для SEO, то в багатьох з них вже вшита функція перекладу посилань.
У цій же статті, я розповім як самому задати транслітерацію і формування ЛЗУ за допомогою невеликого коду. Також даний спосіб дозволить задати свої правила транслітерації. Наприклад, мені цей спосіб дозволив додати параметри транслітерації для українських літер. У прикладі вони будуть, так що даний код підійде для тих, хто як і я робить сайт українською та російською мовами. Якщо ж ні, то можете просто видалити зайві переклади.
Як завжди, щоб додати нову функцію в WordPress, вам знадобиться файл призначений для функцій користувача function.php. Додаєте в самий кінець перед закриваючим тегом PHP ?>. Якщо його немає, то просто в самий кінець.
Перед внесенням змін в function.php , обов'язково збережіть його копію, щоб в подальшому, у випадку помилки, повернути все як було. Так само, можете використовувати дочірню тему. Якщо ви не знаєте що це таке, то ознайомтеся зі статтею - Дочірні теми WordPress.
$iso_my_thm = array(
"Є"=>"EH","є"=>"eh","І"=>"I","і"=>"i","Ї"=>"i","ї"=>"i",
"А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D",
"Е"=>"E","Ё"=>"JO","Ж"=>"ZH",
"З"=>"Z","И"=>"I","Й"=>"JJ","К"=>"K","Л"=>"L",
"М"=>"M","Н"=>"N","О"=>"O","П"=>"P","Р"=>"R",
"С"=>"S","Т"=>"T","У"=>"U","Ф"=>"F","Х"=>"KH",
"Ц"=>"C","Ч"=>"CH","Ш"=>"SH","Щ"=>"SHH","Ъ"=>"'",
"Ы"=>"Y","Ь"=>"","Э"=>"EH","Ю"=>"YU","Я"=>"YA",
"а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d",
"е"=>"e","ё"=>"jo","ж"=>"zh",
"з"=>"z","и"=>"i","й"=>"jj","к"=>"k","л"=>"l",
"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
"с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"kh",
"ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"shh","ъ"=>"",
"ы"=>"y","ь"=>"","э"=>"eh","ю"=>"yu","я"=>"ya",
"—"=>"-","«"=>"","»"=>"","…"=>"","№"=>"#"
);
function url_translit_iso($title){
global $iso_my_thm;
return strtr($title, $iso_my_thm);
}
add_action('sanitize_title', 'url_translit_iso', 0);
Давайте пробіжимося по кодові. Спочатку ми створюємо змінну - $iso_my_thm, всередині якої і задані правила транслітерації. У другому рядку якраз і задані українські літери, якщо вони вам не потрібні, то просто видаліть цей рядок з буквами. Якщо не потрібні російські, то видаліть їх.
"Є"=>"EH","є"=>"eh","І"=>"I","і"=>"i","Ї"=>"i","ї"=>"i",
//або
"Ё"=>"JO","ё"=>"jo","Ъ"=>"'","ъ"=>"","Э"=>"EH","э"=>"eh","ы"=>"y",
Як ви вже зрозуміли, кожне правило має вигляд - "Д"=>"D" і розділяються комою. Ви можете додати свої, якщо потрібно або видалити зайві.
Після змінної йде функція, яка і буде виконувати транслітерацію - url_translit_iso. Вона використовує нашу змінну, де задані правила і з її допомогою змінює кириличні символи в назві запису на латиницю.
В останньому рядку ми створюємо подію - add_action, таким чином викликаємо нашу функцію, щоб вона почала працювати.
Після того як додали код, можете перейти в консоль вашого сайту і спробувати створити новий запис. Задайте йому назву і подивіться як сформується посилання. Якщо замість кирилиці з'явилася латиниця, значить ви все зробили правильно.
На цьому все, дякую за увагу. 🙂