У меня уже есть статья на сайте, где я рассказывал, как с помощью плагинов решить данную задачу, а так же как правильно настроить формирование ссылок на 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",
Как вы уже поняли, каждое правило имеет вид - "Д"=>"D" и разделяются запятой. Вы можете добавить свои, если нужно или удалить лишние.
После переменной идет функция, которая и будет выполнять транслитерацию - url_translit_iso. Она использует нашу переменную, где заданы правила и с ее помощью меняет кириллические символы в заглавии записи на латиницу.
В последней строке мы создаем событие - add_action, таким образом вызываем нашу функцию, чтобы она начала работать.
После того как добавили код, можете перейти в консоль вашего сайта и попробовать создать новую запись. Задайте ей заглавие и посмотрите как сформируется ссылка. Если вместо кириллицы появилась латиница, значит вы все сделали правильно.
На этом все, спасибо за внимание. 🙂