Удаление базовой категории вызывает ошибку 404.

Вопрос или проблема

Я пытался убрать /category/ из структуры постоянных ссылок, сохраняя родительскую категорию, но WordPress выдает мне страницу с ошибкой 404.

Я не использую никакой конкретный плагин для этого, просто использую . в категории и использую %category%/%postname%/ в качестве структуры постоянных ссылок.

Если я восстанавливаю /category/, все работает нормально. Я уже использовал “https://wordpress.stackexchange.com/” и ‘.’ для удаления базовой категории.

Как я могу решить эту проблему?

Просто введите “https://wordpress.stackexchange.com/” ИЛИ ‘.’ (без кавычек) в качестве значения для базовой категории.

Показалось, что это работает идеально, когда я тестировал это. Мне было бы интересно узнать, если кто-то обнаружит другие опасности при этом, кроме очевидной потенциальной возможности столкновений между постами, страницами и категориями.

Хорошо, я протестировал и могу воспроизвести проблему на своем тестовом сайте. Посты работают как ожидалось, но действительно, подкатегории не работают.

Одно из решений, которое на самом деле не практично, если у вас много категорий, но решает проблему, это создать страницы с одинаковыми путями и использовать шорткод на этих страницах. Шорткод отобразит соответствующие страницы в виде списка. Единственная проблема заключается в том, что он не будет использовать тот же формат, который по умолчанию ожидается в вашей теме…

Таким образом, если у вас есть родительская категория с именем parent и дочерняя категория с именем child, вы:

  1. создаете страницу с путем, установленным на /parent/
  2. создаете дочернюю страницу с путем, установленным на /child/, а затем помечаете ее как дочернюю к /parent/

Обратите внимание, что вы не сможете получить правильный путь для дочерней страницы (/parent/child/ в моем примере) без предварительного создания родительской страницы. Одно хорошее дело в том, что внешний вид списка в родительской категории таким образом будет совпадать с внешним видом дочерней.

На страницах вы можете ввести любой текст, который хотите, а затем использовать шорткод, такой как этот:

[display-posts category="second-category"]

Я использую плагин Display Posts Shortcode, который, вероятно, не самый лучший плагин для этой работы, но у него есть преимущество – он работает хорошо. Не стесняйтесь пробовать другие…

Теперь, если у вас сотни категорий и вы постоянно добавляете/удаляете их, это будет настоящим кошмаром. Если у вас есть несколько хорошо выбранных категорий, вам будет достаточно так.

(Вам также понадобится немного CSS, чтобы помочь с форматированием вывода.)

Вот скриншот дочерней страницы. Мы видим, что путь выглядит правильно. Это связано с тем, что я настроил родительскую категорию (правый бок экрана). Я также показываю шорткод.

введите описание изображения здесь

Теперь вам, вероятно, следует сообщить о этой проблеме как об ошибке на WordPress.org.

Ответ или решение

Устранение ошибки 404 при удалении базовой категории в WordPress

Проблема, с которой вы столкнулись, связана с тем, что при попытке удалить «/category/» из структуры постоянных ссылок в WordPress вы получаете страницу с ошибкой 404. Это происходит из-за конфликта маршрутов и нехватки соответствующих реакций со стороны системы для дочерних категорий. Давайте разберем данную проблему и предложим возможные решения.

Причины возникновения ошибки 404

Когда вы указываете в настройках постоянные ссылки символ «.», WordPress не может корректно распознать маршруты для более глубоких уровней категорий (например, родительская категория и ее дочерняя категория). При этом запросы на страницах с адресами, содержащими дочерние категории, не обрабатываются правильно, и вы получаете ошибку 404.

Технические аспекты

Структура постоянных ссылок %category%/%postname%/ в сочетании с удалением базового элемента категории создает потенциальные конфликты. Например, если у вас есть родительская категория parent и ее дочерняя категория child, WordPress не знает, как правильно обрабатывать URL example.com/parent/child/, так как ни один маршрут не указывает напрямую на настоящую категорию.

Решения проблемы

  1. Перенаправление URL:

    • Если вы часто удаляете или добавляете категории, разумно использовать специализированные плагины для управления переадресацией. Эти плагины помогут избежать конфликтов и настроить правильные маршруты.
  2. Создание статических страниц:

    • Как вы уже упомянули, создание страницы для каждой категории и использование шорткодов для отображения записей – это рабочий метод, хотя и не самый оптимальный для большого количества категорий. Для каждой родительской и дочерней категории можно создать статические страницы, использующие шорткод, подобный:
      [display-posts category="child"]
    • Это позволит выводить записи соответствующих категорий на созданной странице, но потребует дополнительной настройки внешнего вида (CSS).
  3. Использование плагинов для категорий:

    • Рассмотрите возможность использования плагинов для управления категориями. Плагины, такие как Yoast SEO, также могут помочь в устранении таких конфликтов и обеспечивают управление постоянными ссылками.
  4. Кэширование:

    • Если вы используете систему кэширования, обязательно очистите кэш после изменения структуры постоянных ссылок. Кэшированные страницы могут вызывать проблемы при их обновлении.
  5. Отчет об ошибке:

    • Так как вы воспроизвели ошибку на тестовом сайте, стоит сообщить об этом разработчикам WordPress через официальную платформу: WordPress.org. Это может помочь в дальнейшем улучшении платформы.

Вывод

Удаление базовой категории в WordPress – задача не из простых, и она требует тщательной настройки и понимания путей обращения к контенту. При этом существует несколько методов решения проблемы. Если у вас ограниченное количество категорий, приемлемо использовать статические страницы и шорткоды. Однако, для более продвинутых сайтов с большим числом категорий настоятельно рекомендую изучить плагины и системы переадресации.

Оцените материал
Добавить комментарий

Капча загружается...