The_Lars
@The_Lars

Woocommerce страницы конфликтуют с категориями?

Короче, есть категории, которые называются так же как некоторые страницы. Например: /napitki/ и страница с аналогичным название /napitki/, но если перейти на эту страницу, попадаешь на страницу категории...
По началу такого не было, всё началось после переноса (я что-то нажала и всё сломалось). Кончено, можно, просто переименовать категории, но мне интересно - почему всё сломалось то?
  • Вопрос задан
  • 240 просмотров
Решения вопроса 1
kumaxim
@kumaxim
Web-программист
=== VANGA MODE ON ===
Вам нужно ознакомиться с принципом работы Rewrite API в Wordpress. Если очень коротко, то есть список из 16-ти базовых правил: категории(/category/), теги(/tags/), страницы, посты и навигация/пагинация, т.е. циферки внизу страниц категорий/тегов(/page/1/ или /page/2 и т.п.).

Разумеется, WP дает возможность разработчику самому добавить новое правило, если ему это необходимо. Новое правило может быть добавлено либо в начало(рекомендуется) либо в конец стандартного списка правил.
Для добавления нового правила, чаще всего используют функцию add_rewrite_rule, однако, если ты начнешь копать в старые плагины, то ты увидишь, что на ряду с этим также, новое правило может добавляться на фильтре generate_rewrite_rules.

Оба этих способа приводят к одному результату, про различия можешь в сети почитать, где-то на StackOverflow было довольно грамотное описание.

На сколько я помню, Woocommerce добавляет свои правила через функцию add_rewrite_rule в начала списка правил, поэтому, если у Вас есть две страницы с одним УРЛом(товар в Woocommerce и категория/страница/тег), то Wordpress отправит Вас на первое что ему попадется. Ранее, по всей видимости, у Вас первым был товар Woocommerce, потом категория.

Как Вы думайте где WP хранит правила? Я вариантов кроме таблицы wp_option в БД не знаю. При переносе Вашей БД между серверами, возможно, при экспорте/импорте там чего-то оптимизировалось, и теперь Ваше правило Woocommerce упало вниз, т.е. стало идти после стандартных правил Wordpress. По этой причине Вы и наблюдайте такое поведение.
=== VANGA MODE OFF

Как такое исправить:
  • Самый правильный, на мой взгляд, способ - добавить префикс категории и тегу, чтобы они не пересекались. Смотреть внизу странице Settings => Rewrite в админке.
  • Второй - попробуйте деактивировать все плагины и обновить/переустановить Wordpress из самого Wordpress(страница Home => Updates). После активируйте снова все плагины. Гипотетически, это должно запустить где-то функцию flush_rewtire_reles(), которая очищает все УРЛ-правила для WP и Ваше ожидаемое поведение должно восстановиться. Хотя, лично мне это кажется "тугим" методом....


Если вариант 1 и 2 не выгорают - ставите плагин Query Monitor и начинайте дебажить
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы