Dr.Slon Toolkit 0.12.0: капча Яндекса на входе и перевод старых кириллических URL

6 сентября 2026 вышел Dr.Slon Toolkit 0.12.0. В этом выпуске две рабочие вещи для клиентских WordPress-сайтов: капча Яндекса наконец нормально садится на форму входа, и уже существующие кириллические постоянные ссылки можно перевести в латиницу вместе с 301.

Плагин модульный, ставится ZIP из GitHub Releases, Composer на сервере клиента не нужен. Нужны WordPress 6.6+ и PHP 8.1+. Обновление с 0.11.x приходит из того же GitHub Release, если автообновления плагинов не выключены.

Почему капча Яндекса не влазила в wp-login

Стандартная форма входа WordPress узкая: блок #login шириной 320px, у формы внутренние отступы по 24px и overflow: hidden. Чекбокс Yandex SmartCaptcha около 300×100 пикселей. В чистой математике он уже шире полезной области формы, поэтому виджет обрезался по краям, а выпадающая проверка могла прятаться за рамкой.

В 0.11.0 капча уже проверяла токен на сервере, но контейнер был с фиксированной высотой 100px и без отдельной вёрстки под wp-login. Для скрытого URL входа это тот же экран: WordPress всё равно рисует нативную форму.

Что сделано с формой входа

В 0.12.0 на страницу логина подключается свой CSS. Форма становится шире (360px), у #loginform снимается скрытие overflow, виджет оборачивается в .dstk-login-captcha. На узком экране чекбокс чуть масштабируется, чтобы не вылезал за край телефона.

Логика проверки не менялась. Нужны клиентский и серверный ключи из Yandex Cloud. Восстановление пароля и XML-RPC капчей не закрываются. Если API Яндекса не отвечает, вход не блокируется: это сознательный fail-open, чтобы админ не остался за дверью из-за чужого сбоя.

Кириллица в старых ссылках

Модуль транслитерации и раньше переводил новые slug: «Главная страница» становилась glavnaya-stranitsa, то же для рубрик и имён загружаемых файлов. Уже опубликованные URL он намеренно не трогал, чтобы не развалить внешние ссылки и индекс.

На сайте, который жил без плагина, в базе остаются post_name вроде о-компании и ярлыки рубрик новости. В браузере это выглядит как русские пути, в sitemap и в письмах клиентов тоже. Для нового сайта это не проблема. Для старого, который пора привести к латинице, ручной правки сотен записей недостаточно: ещё нужны редиректы.

Как перевести существующие URL

На странице Dr.Slon Toolkit появился блок «Существующие кириллические URL». Плагин показывает порцию записей, страниц и публичных рубрик, у которых в slug есть кириллица, и предлагает латинский вариант по тому же профилю, что и для новых заголовков.

  1. Включите модуль «Транслитерация URL», если хотите, чтобы новые материалы тоже шли латиницей.
  2. Сделайте резервную копию базы. Меняются постоянные ссылки, это не косметика.
  3. Отметьте «Поставить 301 со старых адресов на новые» и подтверждение, что ссылки изменятся.
  4. Нажмите «Перевести существующие URL». За один запуск уходит до 100 slug: сначала термины, потом записи, родители раньше детей.
  5. Если порция не последняя, запустите перевод ещё раз.

Редиректы пишутся в отдельную опцию dstk_translit_redirects, не в текстовое поле Redirect Manager (там лимит 100 правил). Старый путь продолжает отдавать 301 даже если модуль транслитерации потом выключить. Цепочки схлопываются: если сначала /новости/ ушёл на промежуточный адрес, а потом ещё раз, в правиле остаётся конечный URL.

Для записей WordPress и сам сохраняет _wp_old_slug. Отдельные 301 нужны, когда в пути сидит кириллическая рубрика или родительская страница: после смены ярлыка категории меняется и URL латинской записи.

Что инструмент не делает

Не переименовывает файлы в uploads. Имя фото.jpg на диске останется как было, транслитерация файлов работает только для новых загрузок. Не трогает японские и прочие некириллические slug. Не переписывает содержимое постов в поиске старых URL внутри текста.

Перед массовой сменой ссылок разумна копия базы. Если в постоянных ссылках участвует %category%, сначала смотрите превью: в таблице видно, какой slug станет каким. После перевода сбросьте кеш страниц и проверьте пару старых адресов в приватном окне.

Как поставить 0.12.0

Скачивать нужно asset dr-slon-toolkit-0.12.0.zip со страницы GitHub Releases, не Source code и не кнопку Code → Download ZIP. С 0.9.0 плагин проверяет SHA-256 и структуру архива. На сайте с уже установленным Toolkit обновление должно появиться в стандартном списке обновлений WordPress.

wp plugin get dr-slon-toolkit --field=version

Ожидаемый ответ после обновления: 0.12.0. Если WP-CLI нет, версия видна на экране плагинов и в шапке настроек Dr.Slon Toolkit.

Где обычно ломается

Капча не показывается, пока не заполнены оба ключа: в админке будет предупреждение. Если тема или другой плагин жёстко задаёт ширину #login, наш CSS может проиграть по специфичности, это видно сразу на экране входа.

После перевода URL кеш (плагин страниц, CDN, HTML-кеш хостинга) может ещё отдавать старые адреса. Редирект живёт на template_redirect, поэтому «голый» WordPress должен ответить 301. Если видите 200 со старым путём, сначала снимите кеш.

Меню из произвольных ссылок, где URL вбит руками, тоже упрётся в 301, если отмечена галка редиректов. Ссылки на вложения в медиабиблиотеке по файлу на диске не изменятся.

Как проверить результат

  • Форма входа: чекбокс Яндекса целиком внутри белой карточки, кнопка «Войти» не перекрыта.
  • Скрытый slug входа, если модуль включён: та же форма, капча на месте.
  • Превью транслитерации: в таблице нет кириллицы в колонке «Станет».
  • Старый адрес записи: ответ 301 на латинский путь, страница открывается.
  • Sitemap и внутренний поиск: новые URL, без русских сегментов в пути записей и рубрик.

Вывод

0.12.0 закрывает две бытовые дыры клиентского WordPress: капча на входе больше не торчит из узкой формы, а кириллические ссылки с прошлых лет можно убрать без ручной правки каждой записи. Ставить только ZIP с GitHub Releases. Перед массовым переводом URL нужна копия базы, после него проверка 301 и сброс кеша.

Репозиторий и исходники: A-Krivoshen/dr-slon-toolkit. Задачи по WordPress и сопровождению сайтов по-прежнему на wordpress.krivoshein.site.

Источники


Комментарии загружаются…