Транслитерация меток (тегов) в WordPress — важный аспект оптимизации SEO для сайтов на русском языке и других языках с нелатинскими символами. Если теги остаются на кириллице, URL-адреса страниц с этими тегами могут выглядеть громоздко и плохо индексироваться поисковыми системами. В этой статье мы рассмотрим, как автоматизировать процесс транслитерации меток, чтобы улучшить читаемость и SEO вашего сайта.
Почему важна транслитерация меток в WordPress
По умолчанию WordPress создает ярлыки (slug) для меток на основе их названий. Если метка написана на русском языке, slug будет содержать кириллицу, например, пример-тега. Такие URL могут вызывать проблемы:
- Некорректное отображение в некоторых браузерах и системах.
- Ухудшение SEO из-за длинных или непонятных URL.
- Сложности при ручном копировании ссылок и их распространении.
Автоматическая транслитерация преобразует кириллические символы в латиницу, например, primer-tega, что выглядит аккуратнее и удобнее для SEO.
Решения для автоматической транслитерации меток
Использование плагинов
Существует несколько плагинов, способных автоматизировать транслитерацию ярлыков в WordPress:
- Cyr3lat — плагин для транслитерации русских URL в латиницу для записей, категорий и меток.
- Clearfy Pro — расширенный инструмент оптимизации, который включает настройку транслитерации URL и меток.
Преимущество плагинов — простота установки и настройки без необходимости писать код. Однако, если нужна более тонкая настройка или интеграция с уникальными функциями сайта, стоит рассмотреть программный подход.
Программная автоматизация транслитерации меток
Для автоматической транслитерации меток при их создании или обновлении можно использовать хук created_term и функцию для преобразования названия в латиницу. Ниже пример реализации функции cyrtolat_transliterate_tag_slug, которая автоматически заменит slug метки:
function cyrtolat_transliterate_tag_slug($term_id, $tt_id, $taxonomy) {
if ($taxonomy !== 'post_tag') {
return;
}
$term = get_term($term_id, $taxonomy);
if (!$term || is_wp_error($term)) {
return;
}
// Проверяем, если slug уже латиницей, ничего не делаем
if (preg_match('/^[a-z0-9\-]+$/', $term->slug)) {
return;
}
// Функция транслитерации
$transliterate = function($text) {
$converter = array(
'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd',
'е' => 'e', 'ё' => 'e', 'ж' => 'zh', 'з' => 'z', 'и' => 'i',
'й' => 'y', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n',
'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't',
'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch',
'ш' => 'sh', 'щ' => 'sch', 'ь' => '', 'ы' => 'y', 'ъ' => '',
'э' => 'e', 'ю' => 'yu', 'я' => 'ya', ' ' => '-', '_' => '-'
);
$text = mb_strtolower($text, 'UTF-8');
$text = strtr($text, $converter);
$text = preg_replace('/[^a-z0-9\-]/', '', $text);
$text = preg_replace('/-+/', '-', $text);
$text = trim($text, '-');
return $text;
};
$new_slug = $transliterate($term->name);
// Обновляем термин с новым slug
wp_update_term($term_id, $taxonomy, array('slug' => $new_slug));
}
add_action('created_term', 'cyrtolat_transliterate_tag_slug', 10, 3);Эта функция перехватывает создание метки, проверяет, если slug содержит кириллицу, и преобразует его в латиницу с помощью простого словаря транслитерации. После этого обновляет метку с новым slug.
Обработка уже существующих меток с кириллическими slug
Если на вашем сайте уже есть метки с кириллическими slug, можно написать скрипт, который массово обновит их. Вот пример функции, которую можно запустить один раз из файла темы или плагина:
function cyrtolat_bulk_update_tags_slugs() {
$tags = get_terms(array(
'taxonomy' => 'post_tag',
'hide_empty' => false,
'slug__not_in' => array(),
));
if (is_wp_error($tags) || empty($tags)) {
return;
}
foreach ($tags as $tag) {
if (!preg_match('/^[a-z0-9\-]+$/', $tag->slug)) {
$new_slug = cyrtolat_custom_transliterate($tag->name);
wp_update_term($tag->term_id, 'post_tag', array('slug' => $new_slug));
}
}
}
function cyrtolat_custom_transliterate($text) {
$converter = array(
'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd',
'е' => 'e', 'ё' => 'e', 'ж' => 'zh', 'з' => 'z', 'и' => 'i',
'й' => 'y', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n',
'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't',
'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch',
'ш' => 'sh', 'щ' => 'sch', 'ь' => '', 'ы' => 'y', 'ъ' => '',
'э' => 'e', 'ю' => 'yu', 'я' => 'ya', ' ' => '-', '_' => '-'
);
$text = mb_strtolower($text, 'UTF-8');
$text = strtr($text, $converter);
$text = preg_replace('/[^a-z0-9\-]/', '', $text);
$text = preg_replace('/-+/', '-', $text);
$text = trim($text, '-');
return $text;
}
// Запуск функции один раз
// cyrtolat_bulk_update_tags_slugs();После запуска эта функция пройдет по всем меткам и обновит slug у тех, у кого он содержит кириллицу. Закомментирован вызов функции — раскомментируйте его только один раз для обновления.
Дополнительные советы по транслитерации и SEO меток
1. Чтобы избежать конфликтов slug, добавляйте проверку на уникальность при обновлении.
2. Используйте плагины кэширования и SEO, например, Clearfy Pro, которые помогают оптимизировать URL и SEO настройки.
3. Регулярно проверяйте корректность ссылок и при необходимости создавайте 301 редиректы с устаревших URL на новые.
4. Если вы используете многоязычный сайт, учитывайте особенности транслитерации для разных языков.
Преимущества автоматической транслитерации в работе сайта
Автоматизация транслитерации меток экономит время и снижает вероятность ошибок при ручном создании slug. Это особенно актуально для больших сайтов с тысячами меток и частым добавлением нового контента. Правильно настроенные URL повышают доверие поисковых систем и улучшают индексирование вашего сайта.
Таким образом, автоматическая транслитерация меток — простой и эффективный способ улучшить SEO вашего WordPress-сайта. Используйте готовые плагины или добавляйте собственные функции, чтобы обеспечить единообразие и удобство URL.