Про wp-hashed-id

Есть такой плагин. Добавляет тег %hashed_id% в настройки постоянных ссылок, после чего они могут выглядеть вот так: atrax.ru/aDfcw. Коротко, удобно и не превращаются в punicode ад при попытки скопировать ссылку в коммуникатор.

Я по наивности своей думал, что это какой-нибудь base62 (отсутствие цифр в ссылках меня не смутило и было списано в случайность) и в код смотреть я не стал. Как оказалось зря…

Время шло, плагин устаревал и наконец перестал работать. «Печаль», вздохнул я, отключил его и попытался все это дело раскодировать. Вот тут-то все и началось.

Блог к тому времени порядочно подрос и внутренних ссылок стало больше, чем могло вместиться в поле моего зрения. Периодически я исправлял бросающиеся в глаза ссылки, иногда начинал планомерно вычитывать всю историю, но очень скоро это гиблое дело бросал. Блог у меня из категории «записная книжка» в жанре «оставлю это здесь, чтобы не забылось», поэтому серьезные усилия по его спасению предпринимать было лень.

Совсем недавно мне что-то стукнуло изнутри (так всегда было, но я только через много лет научился слушать того, кто там, и доверять ему) и я отправился на поиски плагина echoded_id. Долго ли, коротко ли, но правильное название я вспомнил и увидел, что искал его не зря — он обновился. Радостно поставив его, в наивной надежде на мистическую «обратную совместимость» я бросился проверять ссылки. Ничего не вышло. И пришло время смотреть в код.

Первое, что я понял из кода — это тот факт, что «hashed» в названии плагина не просто так. Это действительно не банальный base62, а настоящий хеш с настраиваемым алфавитом и солью. Причем, в первой версии никаких настроек не было.  Откопав первую версию из SVN-репозитария WP.org, я нашел и ту соль, и тот алфавит. Подставил в настройки нового — не работает. Попробовал (снова внутренний голос присоветовал) установить старый — вдруг получится?

И сработало, …ять!
— Руслан Габидуллин, «Студия 420»

Ссылки ожили и стали вести на прежние места. А плагин, тем временем, настоятельно требует обновления. Но больше в зависимость от стороннего разработчика мне не хотелось. И я решил избавиться от этой зависимости.

Поставил вспомогательный плагин Broken Link Checker и собрал все битые ссылки. Все полечил и отключил wp-hashed-idи получил окончательный список битых ссылок. Потом снова включил плагин и в файле single.php добавил вывод post_ID. Дальше немного рутины — переходить по битым (но на этот момент работающим) ссылкам и ID из них вписывал как atrax.ru/?p=. Затем окончательно удалил плагин и убедился, что все ссылки живы.

Больше с ним связываться не буду.

Добавить комментарий

Please log in using one of these methods to post your comment:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s