Legal Entity Marks 1.5.0
Готовый к установке архив: legal-entity-marks-1.5.0.zip (Плагины → Добавить новый → Загрузить плагин, либо wp plugin install legal-entity-marks-1.5.0.zip --activate). Обновление поверх 1.4.0 без потери данных; после установки запустите пересканирование в разделе «Сканер».
Склонение имён
Фамилии и имена теперь ищутся во всех падежах: «по словам Иванова», «письмо Иванову», «с Ивановым», «о Иванове». Работает и порядок «Иван Иванов» из текста статьи, а не только «Иванов Иван» из реестра.
Род определяется по отчеству, а при его отсутствии по окончанию фамилии. Женские фамилии на согласную не склоняются: «Апахончич Дарья» остаётся неизменной, и «Апахончича» под маркировку не попадёт. Несклоняемые типы (-ко, -ых, -их, -аго, на гласную) отдаются как есть.
Однофамильцы. Отдельная фамилия без имени по умолчанию засчитывается, только если полное имя встречается в той же статье — так и построена журналистская подача: первое упоминание полное, дальше по фамилии. «Лев Пономарев заявил… Пономарев добавил…» размечается целиком, а заметка про постороннего чиновника Пономарева нет.
Это не перестраховка. В реестре иноагентов есть носители 13 из 24 самых частых русских фамилий, а мужской родительный падеж совпадает с женским именительным («Смирнова» — и Смирнов в родительном, и Смирнова в именительном). На проверочном наборе из восьми заметок про посторонних людей режим «искать фамилию всегда» дал 19 ложных срабатываний, режим по умолчанию — ни одного. Режим переключается в настройках.
Сканирование замедлилось примерно в 1.5 раза: 25 мс против 16 мс на статью, 10 000 статей — около 4 минут.
Выбор реестров
Каждую из четырёх категорий можно отключить в настройках. Выключенная не маркируется и не попадает в блок дисклеймеров, пересканирование не требуется — изменение действует сразу.
Исправлено: настройка была объявлена в коде, но никуда не подключена, то есть все четыре реестра применялись всегда.
Иноагенты только в цитатах и ссылках
Отдельный режим для редакций, которые не маркируют имена при обычном упоминании. Когда он включён, голая фамилия в тексте не размечается, а маркировка ставится там, где человека цитируют или дают ссылку на его материал. Остальных трёх реестров правило не касается.
Условия настраиваются: блок цитаты, абзац с гиперссылкой, прямая речь в кавычках, встроенный пост из соцсети. Цитата засчитывается вместе с подводкой и подписью в соседних абзацах — «Об этом заявил Иванов:» стоит перед blockquote, а не внутри него.
Ручное управление в редакторе
В статье появился блок «Маркировка». Пользователь с ролью «Редактор» или выше видит, что нашёл сканер, и может снять ложное срабатывание. В обратную сторону тоже: если правило контекста отсекло упоминание, которое по мнению редакции надо пометить, оно возвращается галочкой. Решение действует только для своей статьи; автору и ниже блок недоступен.
Проверки
В составе плагина появилась папка tests/ с проверками морфологии, поиска и контекстного правила (запуск через docker, инструкция в tests/README.md): 43 проверки склонения, 28 проверок поиска, 21 проверка контекста.
Проверено на WordPress 7.0.1 / PHP 8.3: установка, автоимпорт, оба сканера, маркировка на фронтенде, разграничение прав редактора и автора, страница настроек, деинсталляция.