wp_old_slug_redirect() WP 2.1.0
Функция ядра, которая перенаправляет пользователя со старых ссылок записи на актуальную.
Функция работает только с плоскими (не древовидными) типами записей.
Функция срабатывает на хуке template_redirect:
add_action( 'template_redirect', 'wp_old_slug_redirect' );
Эту функцию не нужно использовать где-либо, она используется в ядре автоматически.
Чтобы показать как работает функция рассмотрим пример:
Допустим у нас была запись с заголовком "Привет" и ссылкой site.ru/привет
. Мы изменили ярлык (slug) записи и ссылка стала site.ru/privet
. При этом во время изменения ярлыка WP автоматически сохранил старый ярлык в метаполе _wp_old_slug
- туда записалось %d0%bf%d1%80%d0%b8%d0%b2%d0%b5%d1%82
— слово "привет" обработанное urlencode().
Теперь, если зайти на старый адрес site.ru/привет
, то прежде, чем показать пользователю 404 ошибку, WP вызывает wp_old_slug_redirect(), которая с помощью функций _find_post_by_old_slug() или _find_post_by_old_date() пытается найти ID записи, у которой раньше был запрашиваемый в URL ярлык или дата (поиск по метаполю _wp_old_slug
или _wp_old_date
). Если запись удаётся найти, то функция перенаправляет по новому адресу с 301 ответом сервера.
Поиск по дате нужен, когда в ЧПУ используется дата. В этом случае при изменении даты записи, старая дата записывается в метаполе _wp_old_date
.
У записи может быть сколько угодно старых ярлыков.
Хуки из функции
Возвращает
Ничего (null).
Использование
wp_old_slug_redirect();
Список изменений
С версии 2.1.0 | Введена. |