Непонятные дубли записей
Такая проблема: на сайте зарегистрирован тип записей book, таксономия zhanry.
То есть ссылка на запись выглядит так:
https://vknige.net/zhanry/boevaya-fantastika/zakon-chernobylya
Но книга доступна ещё и по такому адресу:
https://vknige.net/zhanry/no-zhanry/zakon-chernobylya
Откуда они берутся я никак не пойму. Можно ли как-то их удалить, либо сделать 301 редирект?
Большое спасибо!
Это происходит от того, что структура пермалинков записи работает только с идентификатором записи или её слагом и игнорирует любые другие составляющие.
Такое правило перезаписи как в примере создано либо Вами, либо каким-то плагином.
Проверьте правило с помощью плагина Rewrite Rules Inspector, он должен указать на "виновника".
no-zhanry это, по-видимому, какой-то элемент таксономии zhanry, присваиваемый по умолчанию плагином, которым создана таксономия?
Таксономию no-zhanry я не создавал, а саму таксономию создал с помощью записи в файл function.php
Но на ряду с этим существует плагин pods, может ли он создавать данную таксономию?
А можно просто поставить 301 редиректы?
Но как это сделать? Подскажите, пожалуйста
no-zhanry это не таксономия, а элемент (метка, категория) таксономии "zhanry".
Плагин вполне мог создать в таксономии "метку по умолчанию" (об автоматической природе метки говорит слаг - к названию таксономии добавлено отрицание no) и присваивать её тем записям типа book, которым автор не присвоил метку руками.
Поработайте с настройками плагина, запретите присваивание метки по умолчанию, не забывайте удалять метку по умолчанию и присваивать правильную метку при создании записи. (Судя по заданной структуре пермалинков, запретить присваивание вряд ли удастся, поскольку наличие метки является обязательным для пермалинка).
можно, конечно. Воспользуйтесь хуком https://wp-kama.ru/hook/template_redirect
Андрей, помогите, пожалуйста с редиректом...
Я не силен в этом
во-первых, найдите посты, привязанные к элементу no-zhanry, и уберите связь с этим элементом у тех записей, которые не должны ее иметь. Можно было бы удалить сам элемент, но тут нужно копаться в настройках плагина pods и там указывать новую метку по умолчанию.
Если этого не хватит, то напишите произвольную функцию для хука template_redirect. [Disclaimer: Пример написан "с головы" прямо в форме комментария, может содержать синтаксические ошибки, или вообще не сработать]
в запущенном случае, если у поста несколько меток zhanry, или плагин окажется настойчивым, может потребоваться дополнительная обработка - получение меток поста, выбор нужной и замена 'no-zhanry' на слаг нужной метки в переменной $redirect_to;
Код работает. Вставил его в function.php
Большое спасибо!