Удаление перенаправления после изменения ЧПУ (slug) страницы
На одной из моих страниц я изменил ЧПУ (slug) для формирования другого URL. Например:
Старый: http://example.com/old-slug
Новый: http://example.com/new-slug
WordPress сделал свое дело, перенаправляя http://example.com/old-slug на http://example.com/new-slug.
Я хотел бы убрать это поведение, так как плагин, который я использую, работает с этим ЧПУ, и перенаправление мешает его работе.
Я проверил этот вопрос и проверил таблицу wp_postmeta
на наличие записей _wp_old_slug
, но ничего не найдено. Мой сервер работает на Nginx, поэтому на него не должны влиять файлы .htaccess.
Есть ли что-нибудь еще, что я могу сделать для удаления этого перенаправления?

Этот код (в вашем functions.php
) отключит эту функцию (но также обратите внимание на оставленный мной комментарий):
remove_action('template_redirect', 'wp_old_slug_redirect');
Странно, что в вашей таблице wp_postmeta
нет ключей _wp_old_slug
- часть кода, которая это делает, находится в wp-includes/query.php
(функция wp_old_slug_redirect()) - вы можете добавить там exit или отладочное сообщение, чтобы проверить, вызывается ли она.
Также помните, что если WordPress не может найти постоянную ссылку, он ищет записи с совпадающим началом, например, если у вас была запись с постоянной ссылкой /foobar, то /foo перенаправит на неё.

Не могли бы вы добавить ваш комментарий в ответ, чтобы расширить его и собрать весь контент в одном месте?

Действительно, ваш комментарий был решением. У меня есть страница под названием Events
, у которой был slug events-page
. Ни одна страница не имела slug events
, но при посещении example.com/events
происходил редирект на страницу Events
. Очевидно, WP сопоставлял slug со страницей, имеющей такое же название, так как ничего другого для этого не существовало.

это сработало для меня:
remove_filter('template_redirect', 'redirect_canonical');
источник: http://biostall.com/prevent-wordpress-redirecting-to-nearest-matching-url/

Для ручного удаления автоматических редиректов после изменения слага (URL) просто удалите соответствующие строки из таблицы "wp-redirection-items" в базе данных через phpMyAdmin.
Это самый простой и эффективный способ, который позволяет удалить редиректы для конкретных записей.

Каждая запись в WordPress имеет свой собственный ярлык (slug), который автоматически генерируется из заголовка записи. Если вы решите изменить ярлык записи позже, WordPress запомнит старый вариант и будет перенаправлять его на новый. Можно предотвратить перенаправление старых ярлыков записей в WordPress, удалив пару действий из ядра WordPress с помощью небольшого сниппета.
Просто добавьте следующий код в файл functions.php вашей текущей темы, чтобы WordPress не перенаправлял старые ярлыки записей на новые:
remove_action( 'template_redirect', 'wp_old_slug_redirect');
remove_action( 'post_updated', 'wp_check_for_changed_slugs', 12, 3 );
