Вопрос или проблема
Мне нужно следующее:
Единственное сообщение test.com/blog/new-category/post-name/
Категория test.com/blog/new-category/
Я изменил структуру постоянной ссылки на: /blog/%category%/%postname%/
и базу категории на blog
. Но это дает мне ошибку 404 на записи.
Я попробовал blog/.
в качестве базы категории, и это сработало. Но только для первой страницы. На второй странице у меня возникает ошибка 404 для test.com/blog/new-category/page/2/
.
Думаю, WP ищет запись с слагом page/2/
.
Кто-либо сталкивался с подобной проблемой и может знать решение?
Спасибо!
-
Измените базу категории на
.
(точка). Никто не знает, будет ли этот трюк работать в будущем, но нет простого способа удалить/category/
из URL. Поэтому лучше найти плагин в гугле (вот один из них). Плагин Yoast SEO также может сделать то же самое. -
Установите структуру постоянной ссылки на
/blog/%category%/%postname%/
.
Затем:
the_posts_pagination();
Эта функция не требует аргументов в вашем случае.
Если вы действительно хотите использовать paginate_links()
, используйте правильное значение аргумента format
потому что красивые постоянные ссылки уже установлены: page/%#%/
, а не ?paged=%#%
:
echo paginate_links( array('format' => 'page/%#%/') );
Смотрите функции пагинации для получения дополнительной информации.
Ответ или решение
Для того чтобы достичь желаемой структуры URL для ваших категорий и постов в WordPress, и избежать ошибок 404, вам необходимо выполнить несколько шагов.
-
Настройка базовой категории:
Перейдите в настройки вашего WordPress сайта. В разделе "Настройки" -> "Постоянные ссылки" установите структуру постоянных ссылок на:/blog/%category%/%postname%/
Затем, в разделе "Настройки" -> "Категории" измените базу категории на
.
Это может быть несколько нестандартным решением, но это позволит избежать конфликта с пагинацией.
-
Установка плагина для удаления базы категории:
Для большей безопасности вы можете установить плагин для удаления/category/
из URL. Один из таких плагинов доступен по ссылке. Плагин Yoast SEO также предлагает опцию для удаления базовой категории из URL. -
Настройка пагинации:
Для правильной работы пагинации, используйте функциюthe_posts_pagination()
для вывода навигации по страницам. Эта функция не требует дополнительных аргументов в вашей ситуации.Если вы хотите использовать
paginate_links()
, убедитесь, что задан правильный формат, так как на вашем сайте уже настроены человеко-читаемые постоянные ссылки. Используйте следующий код:echo paginate_links( array('format' => 'page/%#%/') );
Это обеспечит корректную работу пагинации на страницах, например:
test.com/blog/new-category/page/2/
-
Проверка конфликта с записями:
Если у вас все еще возникают ошибки 404 при переходе на страницы, убедитесь, что слуги категорий и постов не пересекаются. Например, две записи не могут иметь одинаковый слаг, иначе WordPress будет путаться в их идентификации. -
Обновление постоянных ссылок:
После внесения всех изменений, не забудьте обновить постоянные ссылки на странице "Настройки" -> "Постоянные ссылки", даже если вы не меняли структуру. Просто нажмите "Сохранить изменения", чтобы сбросить правила перезаписи.
После выполнения всех вышеуказанных шагов ваша структура адресов для категорий и постов должна работать корректно без ошибок 404. Если проблемы все еще сохраняются, возможно, вам потребуется проверить файл .htaccess
на предмет наличие конфликтных правил.