В процессе создания новых постов или страниц WordPress автоматически генерирует ярлык (slug) — часть URL, которая отражает название поста. Но иногда WordPress не обрабатывает кириллицу, и вместо красивого URL вы можете получить нечитабельные символы. Сегодня расскажем, как сделать автоматическое создание ярлыков на основе заголовков на русском языке и автоматически переводить их в латиницу — без использования плагинов.
Зачем это нужно?
Читабельные и правильные URL не только улучшают SEO, но и помогают пользователям лучше воспринимать структуру вашего сайта. Например, вместо URL вида site.ru/%d0%bf%d0%be%d1%81%d1%82/
мы получим site.ru/post/
.
Шаг 1: Подготовка файла functions.php
Весь код добавляется в файл functions.php
вашей темы. Этот файл можно найти в админке WordPress, зайдя в Внешний вид → Редактор тем и выбрав файл functions.php
. Рекомендуется сделать резервную копию файла перед изменениями.
Шаг 2: Добавление функции для автоматического создания ярлыков
Добавьте следующий код в файл functions.php
:
// Функция транслитерации для URL-ярлыков
function transliterate_slug($slug) {
$slug = mb_strtolower($slug); // Приведение строки к нижнему регистру
$slug = strtr($slug, array(
'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e',
'ё' => 'yo', 'ж' => 'zh', 'з' => 'z', 'и' => 'i', 'й' => 'y', 'к' => 'k',
'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r',
'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'kh', 'ц' => 'ts',
'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch', 'ъ' => '', 'ы' => 'y', 'ь' => '',
'э' => 'e', 'ю' => 'yu', 'я' => 'ya'
));
// Удаляем все лишние символы, кроме букв, цифр и дефисов
$slug = preg_replace('/[^a-z0-9\-]+/', '-', $slug);
$slug = trim($slug, '-'); // Удаляем начальные и конечные дефисы
return $slug;
}
// Применение функции транслитерации при сохранении поста
add_filter('sanitize_title', 'transliterate_slug', 9);
Как работает этот код?
- Функция
transliterate($text)
: Она принимает текст и переводит его с кириллицы на латиницу, используя таблицу транслитерации. Текст очищается от ненужных символов, оставляя только буквы, цифры и дефисы. - Функция
auto_generate_slug($post_ID)
: Она вызывается каждый раз, когда пост сохраняется. Функция получает заголовок поста, преобразует его в транслитерированный slug и обновляет полеpost_name
(ярлык), если он ещё не был установлен. - Хук
save_post
: Добавленный хук автоматически вызывает функциюauto_generate_slug
при сохранении поста.
Пример результата
После добавления кода, когда вы создаете новый пост с заголовком, например, «Привет, мир!», ярлык будет автоматически установлен как privet-mir
.
Преимущества этого подхода
- Удобство: Вам не нужно вручную прописывать ярлыки или устанавливать плагины для создания slug.
- Читабельность: Slug становится понятным и удобным для восприятия.
- SEO: Чистый URL способствует лучшему ранжированию в поисковых системах и повышает кликабельность.
Заключение
С этим простым кодом у вас больше не будет проблем с кириллическими символами в ярлыках, а также не придется использовать плагины для автоматического создания URL на основе заголовка. Уверен, этот способ поможет вам сделать ваш WordPress сайт более удобным и SEO-оптимизированным!