БАГ: Дубли страниц категорий — разные URL для одной и той же Рубрики (термина таксономии)
В рубриках, как и в прочем других таксономиях, url работает не совсем корректно - страница категории доступна по разным ссылкам.
Например, рубрика доступна по адресам:
- https://wp-kama.ru/cat/wordpress/codex
- https://wp-kama.ru/cat/wordpress/codex/codex
- https://wp-kama.ru/cat/wordpress/dfdfdf/codex
Я так понимаю это проблема всего вордпресс, можно ли как-то решить проблему, чтобы рубрики были доступны по 1 url-адресу? А остальные адреса отдавали 404. Спасибо.
Да это проблема WP. И что странно по дефолту даже канонических ссылок нет в HEAD.
Решить можно таким хаком:
Спасибо. Помогло!
Данная функция не работает. Но проблема актуальна.
Проверил код - работает отлично - редиректит с кривого на нормальный УРЛ. Как он может не работать я даже не знаю. Может вы код куда-то не туда вставили? В functions.php добавь его, а не в какой-нить файл шаблона...
Перепроверил. Код по прежнему не работает.
Но я заметил, что url категорий создается не стандартно.
Например рубрика news и в ней дочерняя рубрика sport
И у меня получился адрес site.com/sport
При всём при этом существует страница
site.com/news/sport
site.com/любой текст/sport
site.com/category/news/sport
Задача сделать переадресацию всех этих дублеров на site.com/sport
Что то у тебя там не то. Проверь что возвращает эта проверка на странице такой рубрики:
var_dump( is_category() || is_tag() || is_tax() )
. Видимо её код не проходит, а должен!Также проверь что возвращает это:
$qo = get_queried_object();
Нашел на сайте активный старый код и отредактировал.
Получилось по умолчанию ссылки открываются так: site.com/category/news/sport
и
site.com/category/news/sport - работает
site.com/news/sport - 404 ошибка
site.com/sport - работает
если вставить функцию check_301redirect_tax_url
то с site.com/sport переадресует на site.com/category/news/sport
Только надо наоборот, чтобы site.com/sport был по умолчанию и всё остальное переадресовало на аналогичный адрес.
выводит
а
ничего не выводит
Сейчас всё идеально работает вместе с функцией check_301redirect_tax_url
Только основной url получился site.com/category/news/sport и соответственно редирект введет на этот адрес.
Как сделать чтобы все рубрики были по умолчанию такие как site.com/sport ??
Хак check_301redirect_tax_url не совместим с плагином No category parents в моем случае это был бы идеальный симбиоз.
Не знаю как работает No category parents, но это неправильно что для get_term_link() он отдает ссылку с деревом родителей - site.com/category/news/sport, должен отдавать site.com/news/sport. По идее дерево можно удалить используя хук term_link.
В подробности вдаваться не буду, потому что хз что там в коде плагина и почему он сам это не делает - очень странно.
Он так не делал, потому что я плагин отредактировал. Сейчас откатил на первоначалку. Получилось как писал в начале.
Главная страница site.com/sport
При всём при этом существует страница
site.com/news/sport
site.com/любой текст/sport
site.com/category/news/sport
Все страницы работают исправно.
Но хак check_301redirect_tax_url не делает редирект.
С чем это связано?
Вот сам плагин:
Извиняй, нет времени разбираться, то что выше писал еще раз проверь с включенным этим кодом.
П.С. Вот это дикий хук ваще
add_action( 'wp_loaded','my_flush_rules' );
- на каждом запросе же срабатывает...Хорошо, пофиг на самом деле на этот плагин. Как сделать чтобы был вот такой юрл:
site.com/news/sport
и работал хак check_301redirect_tax_url
??
Крч всё как здесь wp-kama.ru
Я вообще не понимаю зачем нужно префикс удалять. Он же удобен и для сео вроде как лучше. Поисковик может как-то каталогизировать УРЛы. Все которые с одинаковым префиксом он поймет что относятся к одному типу, например тут это рубрики. А если префикс убрать, то ничем же не будет отличаться от страниц. Неужели ты хочешь чтобы поисковики видели отдельные страницы так же как и категории. Я хз, может когда-то это нужно, но я даже не знаю когда, все должно быть понятно и очевидно и не надо лишний раз ничего выдумывать, при этом усложняя код, добавляя хуки адские как в примере выше.
То что ты просишь можно сделать, но у меня нет готового решения нормального, а писать его сча я не хочу, отчасти и потому что считаю это ненужным вообще занятием. С префиксом по-моему даже лучше и если бы его не было, его бы стоило добавить наоборот ИМХО.
Может в чем то ты и прав. Кроме поисковиков на урл вообще никто не смотрит. И если индексируются дубли, то и поисковикам вообще фиолетово как страница называется. Важнее ее содержимое. Можно кнч поэкспериментировать с префиксом, просто я заметил сейчас поисковая выдача ужасна по отношению к новым сайтам. Скорее всего это из-за последних событий, фильтры срабатывают. В любом случае нужно ставить хак на переадресацию.
я так понимаю для страницы товара нужно вместо
вставить
но при такой конструкции происходит редирект на страницу
сайт.ру/?taxonomy=&term=
или поскажите как сделать чтобы при таком урле сайт.ру/категория/праовлоы/товар был редирект на 404 страницу
https://wp-kama.ru/question/dubli-tovarov-woocommerce там ответил.