Есть ли максимальная длина для слага (slug)?
Клиент создал пост с очень длинным слагом (90 символов), без специальных символов (кроме дефисов) и т.д.
При переходе по ссылке на этот пост, включая "Предпросмотр" или "Посмотреть запись" в админке, возникала ошибка 404.
После ручного сокращения слага всё заработало как положено. Это "фича" или "баг"?
РЕДАКТИРОВАТЬ: Примечание для всех, кто говорит о лимитах базы данных.
Если бы я достиг лимита поля в БД, то слаг был бы автоматически обрезан. Подумайте об этом секунду. В большинстве установок WP wp_posts.post_name имеет тип VARCHAR(200). Если кто-то введёт заголовок длиннее 200 символов, что произойдёт? Слаг обрежется до 200 символов и сохранится в wp_posts.post_name. Ведь никто не вводит полный заголовок поста в адресную строку браузера, заменяя пробелы на дефисы, верно? URL генерируется WordPress, который берёт его из поля wp_posts.post_name и просто вставляет в атрибут href тега ссылки. Так что несоответствия здесь быть не может. Вся эта тема с БД - ложный след.
В любом случае, обсуждаемый слаг имеет всего 90 символов, так что это точно не связано с ограничениями БД.
Есть ли какие-то известные ограничения, связанные с rewrite?

@TomAuger и Eugene - можете подтвердить проблему, потому что Том говорит, что slug содержал 90 символов. Я знаю, что лимит составляет 200, но это не учитывает домашний URL, верно?

Возможно, проблема вообще не была напрямую связана с WordPress или базой данных...
Но длина URL превысила 255 символов (и не все веб-браузеры это поддерживают).
Что могло произойти здесь — это URL длиннее 255 символов, который был обрезан адресной строкой браузера при открытии... что привело к получению некорректной постоянной ссылки... и, как следствие, к ошибке 404.
Таким образом, предположительно, максимальная длина слага может быть:
255 - длина (Протокол + FQDN + структура постоянной ссылки)...
- на основе жесткого ограничения браузера.
Но она не может быть длиннее 200 символов...
- на основе размера поля post_name.
Даже если в данном конкретном случае что-то другое могло вызвать ошибку 404.
Это мог быть символ, который не был правильно закодирован в URL, причины ошибок 404 довольно бесконечны... вы когда-нибудь задумывались о плохом кластере на HDD или неисправном модуле RAM? :)

GUID — это не URL. Он просто выглядит как URL, но не используется для обработки запросов. Если вы переносите WordPress с одного домена на другой, GUID не изменится. Смотрите http://core.trac.wordpress.org/ticket/6492 и http://core.trac.wordpress.org/ticket/10857.

Хм, а для чего ещё, кроме идентификации, должен использоваться уникальный идентификатор? Вопрос в том: почему в этом случае возникает ошибка 404?

404 и GUID не связаны, я думаю. WordPress просто не использует GUID при поиске записи, соответствующей URL.

Думаю, ты прав насчёт этого... post_name и GUID можно исключить как источник проблемы - остаются только постоянные ссылки и перезаписи. Без логов Apache или чего-то подобного это просто гадание на кофейной гуще ;)

@syslogic Я думаю, что перезаписи, скорее всего, являются причиной и требуют дальнейшего исследования. URL, включая часть http://, всё ещё был короче 128 символов, так что вряд ли это достигает жёсткого ограничения браузера на длину URL.
