Что делать, если в конце URL записи добавляется -2, хотя другой записи с таким URL (ярлыком) нету?

В WordPress довольно часто случается, что при создании ярлыка записи (который будет использоваться для URL), в конце добавляется цифра 2 (или 3, иногда даже и 4). Это бывает, когда пост с таким ярлыком уже существует, так как ярлыки, как URL должны быть уникальны.

Старые ярлыки WP

Что делать, если:

  • вам позарез нужно, чтобы URL был именно такой и без всяких циферок на конце,
  • вы проверяете все старые записи и обнаруживаете, что с таким ярлыком больше никаких нет, в том числе и в корзине.

Так в чем же дело?

Смотрите, когда вы меняете ярлык любой статьи в WordPress, есть фишка в том, что какое-то время статья доступна и по старому URL (ставится 301 редирект), это нужно, чтобы после смены URL ваша статья не вылетела из индекса поисковиков.

Вы можете создать новую запись с таким же ярлыком, тогда редирект удалится, но изменить ярлык одной из существующих записей на такой увы не получится.

Старые ярлыки WP тоже хранятся в базе. Чтобы все их просмотреть, зайдите в phpMyAdmin и выполните запрос:

SELECT * FROM `wp_postmeta` WHERE `meta_key` = '_wp_old_slug'

Окей, допустим сейчас статья, которая редиректила имела ярлык «wordpress-diplicate-post», я запустил этот запрос в базе, нашел среди результатов «wordpress-diplicate-post» и удалил — проблема решена.

Также можно запустить запрос напрямую:

DELETE FROM `wp_postmeta` WHERE `meta_key` = '_wp_old_slug' AND `meta_value` = 'wordpress-diplicate-post'

Есть также плагин, который позволяет это сделать WordPress Remove Old Slugs (нашел первый попавшийся, сам я удалял вручную, если будете юзать, сначала резервную копию базы сделайте).

Подпишитесь, чтобы раз в неделю получать свежие статьи с блога по email.

Смотрите также

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Владимир: и на третьей строке не хватает скобки ) закрывающей if :)

  • Миша: Добрый вечер! Рекомендую получить ID пользователя через функцию get_current_user_id().

  • Дмитрий: Миша, подскажите пожалуйста, я использую такой редирект, но он не срабатывает: add_action( 'template_redirect', funct...

  • Миша: Ну как не определена - это аргумент функции. Или я просто вас не до конца понимаю.

  • Артем: Ага, понял. Вот только почему $args? Она же нигде не определена, по логике должна быть переменная $true_field_params или...