Вообще эта функция еще в версии 2.1 появилась: https://core.trac.wordpress.org/browser/tags/4.2.2/src//wp-includes/query.php#L4648 то есть при сталкновении с 404 WordPress в некоторых случаях выполняет поиск по мета-данным _wp_old_slug.
при сталкновении с 404 WordPress в некоторых случаях выполняет поиск по мета-данным _wp_old_slug.
Можно об этом чуть подробней?
С удивлением узнал о существовании https://codex.wordpress.org/wp_old_slug_redirect но не понятно как использовать.
Сейчас же, в 4.2.2, проделав все тоже самое никаких проблем с 404 я к своему удивлению и к своей великой радости не увидел!.
а я вот словил на клиентском сайте.
сначала для ссылок был применен Cyr-to-Lat — старые ссылки редиректили на новые.
а затем заказчик настоял на смене ЧПУ (добавление category) — теперь все старые русские ссылки не работают.
полагаю, что в _wp_old_slug может храниться лишь одно старое значение урла, а 2 последовательных смены перезаписывают старый редирект на новый.
С удивлением узнал о существовании https://codex.wordpress.org/wp_old_slug_redirect но не понятно как использовать.
Если изменить ярлык записи, то в поле _wp_old_slug
автоматически сохранится прежнее значение, и WordPress будет перенаправлять старый адрес на новый. На этом основан принцип сохранения старых ссылок в Cyr-To-Lat. Для страниц это (пока) не работает, только для записей.
полагаю, что в _wp_old_slug может храниться лишь одно старое значение урла, а 2 последовательных смены перезаписывают старый редирект на новый.
В _wp_old_slug
хранится не весь URL, а только ярлык. Ограничений нет, он может меняться несколько раз, и каждый из старых ярлыков будет перенаправляться на текущий. В вашем случае проблема в смене структуры ссылок — перенаправления с /%postname%/
на /%category%/%postname%/
WordPress не делает (только в обратную сторону).
WordPress не делает (только в обратную сторону).
а в каких случаях WordPress делает редиректы, а в каких нет?
интересует, смена на какую структуру не сломает старые ссылки.
Если изменить ярлык записи, то в поле _wp_old_slug автоматически сохранится прежнее значение, и WordPress будет перенаправлять старый адрес на новый
Спасибо, Сергей. Не знал. Однако и не припомню что бы этот механизм работал. По моему после изменения слага 404 отдавалось. Но я проверю обязательно :).
интересует, смена на какую структуру не сломает старые ссылки
Из того, что сказал Сергей, следует, что только при изменении слага будет редирект:
В _wp_old_slug хранится не весь URL, а только ярлык.
те если в ЧПУ изменены «уровни» урла (добавлена /категория/), то работать не будет. Другой вопрос если изменёно формирование части поста (напр добавлена дата к слагу). Это надо проверить.
Отсюда родился вопрос — а короткие урлы (дефолтные) в это механизме участвуют? В см — не через них ли редиректиться?
Модератор
Юрій
(@yube)
Отсюда родился вопрос — а короткие урлы (дефолтные) в это механизме участвуют? В см — не через них ли редиректиться?
Насколько я знаю, для ?p=N работает другой механизм — редирект на канонический URL.
Насколько я знаю, для ?p=N работает другой механизм — редирект на канонический URL.
Ну вот и подумалось — мб это будет второй шаг. Ну те двойной редирект.