SEO · WordPress

All to Lat — латинские slug’и транслитерацией для WordPress и WooCommerce

Версия
v1.1.0
Совместимость
WordPress 6.2+ · WooCommerce · PHP 7.2+
Платформа
WordPress
All to Lat — латинские slug’и транслитерацией для WordPress и WooCommerce

Что внутри

  • Slug латиницей для записей, страниц, произвольных типов, рубрик и меток
  • Товары, категории и атрибуты WooCommerce — тем же фильтром
  • Имена загруженных файлов транслитерируются, расширение сохраняется
  • Работает для редактора, XML-импорта, REST API и WP-CLI
  • Украинский (КМУ 55/2010), русский (BGN/PCGN), болгарский, сербский, белорусский
  • Греческий и латиница с диакритикой: pl, cs, sk, de, fr, es, pt, tr, ro, hu, балтийские, скандинавские, vi
  • Немецкие умляуты как ae/oe/ue — отдельной опцией
  • Массовая конвертация существующих адресов батчами с предпросмотром
  • Журнал изменений и откат прогона одним кликом
  • 301 для переименованных рубрик и меток, которые WordPress не ведёт сам
  • Бесплатный

All to Lat делает все ссылки сайта латиницей. WordPress строит slug из заголовка — и на украинском заголовке в адресе оседает %d0%b0%d0%b1%d0%b2: в выдаче это выглядит спамно, при копировании в мессенджер или письмо ломается, а читателю не говорит ничего. Плагин транслитерирует заголовок первым, поэтому в адресе стоит upravlinnia-nerukhomistiu.

Настройки плагина All to Lat в WordPress
Один экран в «Настройках»: стандарт транслитерации, разделитель, длина и то, к чему правила применяются. 301 со старых адресов — отдельный переключатель, он не зависит от статуса.
Предпросмотр конвертации percent-encoded slug-ов в латиницу
Колонка «Было» — это то, что WordPress записал сам: %d0%ba%d1%80… Колонка «Станет» — то, что увидит покупатель и Google. Предпросмотр ищет именно те строки, которые надо трогать, а не первые 25 подряд.

После конвертации ничего не 404-ится

Переименованную запись ведёт WordPress сам — через _wp_old_slug. Переименованную рубрику или метку он не ведёт: такого механизма для терминов в ядре просто нет, и категория, которая отвечала по старому адресу, начинает отдавать 404 вместе со всеми ссылками на неё. Этот 301 плагин отправляет сам, из собственного журнала, и только для запроса, который уже ничего не нашёл — живую страницу обработчик не трогает.

Интерфейс плагина — на украинском: перевод идёт в сборке, отдельно ничего ставить не надо.

Что стоит знать перед включением

Включение влияет только на slug’и, созданные с этого момента. Существующие адреса меняются только тогда, когда вы сами запустите массовую конвертацию — она предупреждает, показывает предпросмотр и оставляет журнал, который можно откатить.

Журнал прогонов All to Lat с кнопкой отката
Каждый прогон оставляет строку в журнале — видно тип, количество строк и дату, и каждый откатывается отдельно.

Чего плагин не делает

Черновики он не трогает. WordPress намеренно держит у черновика пустой slug и подставляет его из заголовка при публикации — если записать адрес сейчас, он застынет на недописанном названии, а откатить его некуда: предыдущего значения просто нет. Поэтому массовая конвертация работает только с тем, что уже имеет адрес.

История версий

1.1.0 — предпросмотр искал только в первых строках и на сайте со свежим латинским контентом писал «нечего менять», пока счётчик рядом показывал сотни; конвертер записывал slug’и в черновики и откатить их было невозможно; 301 для переименованных рубрик умирал, как только выключали транслитерацию новых ссылок — теперь у него собственный переключатель; если один адрес имели и рубрика, и метка, оба старых адреса вели на одну из них — теперь решает путь запроса; «Откатить» стирал строку журнала даже тогда, когда slug не удалось вернуть, и забирал с ней редирект; долгий прогон молча останавливался на потолке батчей — теперь говорит, где остановился, и продолжает с того места. Счётчики считает база, а не PHP (страница настроек на большом каталоге больше не тормозит), скрипт и стили админки вынесены в файлы. Минимальная версия WordPress — 6.2.

1.0.0 — первый выпуск.

Частые вопросы

Изменятся ли мои нынешние адреса после активации?

Нет. Включение влияет только на slug'и, созданные с этого момента. Существующие адреса меняются только тогда, когда вы сами запустите массовую конвертацию — она предупреждает, показывает предпросмотр и оставляет журнал, который можно откатить.

Старые ссылки после конвертации будут работать?

Да. Записи ведёт сам WordPress через мету _wp_old_slug, которую плагин дописывает; рубрики и метки ведёт плагин из своего журнала. В обоих случаях это 301 — именно то, что нужно поисковым системам, чтобы перенести позиции на новый адрес.

Почему WordPress сам не ведёт переименованную рубрику?

Такого механизма для терминов в ядре просто нет — он существует только для записей. Поэтому категория, переименованная без плагина, начинает отдавать 404 вместе со всеми ссылками на неё.

Работает с WooCommerce?

Да. Товар — это тип записи, а категории товаров — таксономия, поэтому оба проходят через тот же фильтр и оба есть в списке массовой конвертации.

А с многоязычным сайтом?

Да. Плагин транслитерирует тот текст, который ему дали, поэтому каждый язык даёт собственный slug. Стандарт выбирается под ваше письмо — он влияет только на кириллицу.

Что будет с именами файлов в медиатеке?

Новые загрузки сохраняются латиницей: «Отчёт.pdf» становится «otchet.pdf», расширение не меняется. Уже загруженные файлы плагин не переименовывает — это порвало бы ссылки в контенте.

Сколько стоит?

Бесплатно, без ограничений по количеству записей или прогонов.

Трогает ли конвертация черновики?

Нет. У черновика WordPress намеренно держит пустой slug и строит его из заголовка при публикации. Если бы плагин записал адрес сейчас, он застыл бы на недописанном названии, а откатить его было бы некуда — предыдущего значения просто нет.

Что произойдёт со старыми адресами, если выключить транслитерацию после конвертации?

Ничего — 301 управляется собственным переключателем «301 со старых адресов». Выключение транслитерации влияет только на slug'и, которые будут создаваться дальше; уже перенаправленные адреса работают, пока включён редирект.

Вопросы по модулю?

Пишите в Telegram — ответим в течение рабочего дня. Поможем с настройкой, совместимостью и активацией ключа.

@catcode_support

Не тот вариант, что искали?

Мы делаем кастомные модули под WordPress, WooCommerce, OpenCart и Shopify. Расскажите о задаче — подготовим оценку.

Заказать кастомный модуль