Ошибка 404 на страницах категорий и меток

2 февр. 2018 г., 08:41:37
Просмотры: 30K
Голосов: 8

Я столкнулся со странной проблемой - получаю ошибки 404 на страницах категорий блога и страницах меток. Я использую собственную тему, которая включает:

  • tag.php
  • category.php
  • archive.php
  • home.php
  • index.php и
  • 404.php

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

Также есть еще одна странная проблема: если я удаляю файл 404.php из папки темы, ссылки на категории и метки работают нормально и загружают контент из archive.php, но в заголовке страницы отображается "страница не найдена", а к тегу body добавляется класс error404.

Вот список действий, которые я уже попробовал для решения проблемы:

  1. Обновил структуру постоянных ссылок
  2. Применил базовые URL для категорий и меток
  3. Переключился на тему twentyseventeen, в которой все работает нормально
  4. Весь код в файлах header.php и footer.php соответствует рекомендациям WordPress

Пожалуйста, подскажите решение, которое может помочь решить эту проблему, так как все работает нормально без 404.php. Блоги и категории на сайте импортированы с другого сайта с помощью WordPress импортера.

Обновление вопроса: Почему WordPress перенаправляет на 404.php, даже если файлы category.php, archive.php и index.php присутствуют в папке темы WordPress при переходе на страницы категорий или меток?

6
Комментарии

это связано с вашей темой или плагинами. Маловероятно, что кто-то здесь сможет просто угадать, в чем проблема. Вам нужно действительно отладить, что происходит в ваших шаблонах тегов/категорий и почему происходит перенаправление (если это перенаправление, а не простая загрузка).

Mark Kaplun Mark Kaplun
2 февр. 2018 г. 08:56:21

Привет, Mark, я отключил все плагины, также это работает, если я изменю тему или удалю файл 404.php. Но если я удалю файл 404, он показывает ошибку в заголовке WordPress, но отображает все связанные блоги по категории или тегу. Вот почему это странно, я не могу понять, как решить эту проблему, так как мне нужен файл 404.php в моей теме.

Vatsh Patel Vatsh Patel
2 февр. 2018 г. 09:29:46

значит, проблема в вашей теме, без просмотра её кода будет сложно определить причину

Mark Kaplun Mark Kaplun
2 февр. 2018 г. 09:31:09

Весь код в header и footer вызывает базовые функции WordPress, такие как wp_head, wp_footer и wp_nav_menu. Дополнительные функции не вызываются. Также согласно WP Codex должен использоваться шаблон category.php, так что может быть проблема в WordPress 4.9, так как я обновил WordPress сразу после установки.

Vatsh Patel Vatsh Patel
2 февр. 2018 г. 09:35:21

Вы видите шаблон 404, потому что запросы приводят к ошибке 404. Если файл 404.php отсутствует, то используется шаблон index.php. Вы переходите на метку или категорию, содержащую записи? Если да, то у вас в теме есть код, который изменяет основной запрос, в результате чего записи не возвращаются.

Milo Milo
3 февр. 2018 г. 06:12:44

Спасибо за подсказку, Milo, теперь я внимательно проверю каждый файл своей темы, чтобы решить эту проблему, так как определенно есть какая-то ошибка в моем коде или структуре темы.

Vatsh Patel Vatsh Patel
3 февр. 2018 г. 06:57:39
Показать остальные 1 комментариев
Все ответы на вопрос 4
1

Я знаю, что это старый вопрос, но у меня была такая же проблема в унаследованной теме, и в поисках ответов я наткнулся на этот вопрос.

В моем конкретном случае я обнаружил следующий PHP-код в файле темы function.php:

if( is_category() || is_date() || is_author() ) {
   global $wp_query;
   $wp_query->set_404(); // перенаправляет на страницу 404
}

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

20 мар. 2020 г. 20:13:46
Комментарии

В моем случае проблема была не в теме, а в этом плагине https://wordpress.org/plugins/smart-archive-page-remove, который кто-то установил. Тем не менее, ваш ответ очень помог найти причину проблемы

Vinay Vinay
10 авг. 2020 г. 15:13:22
1

пожалуйста, установите постоянные ссылки

Настройка постоянных ссылок в WordPress

затем проверьте URL-адреса рубрик и меток

2 февр. 2018 г. 09:03:15
Комментарии

Привет, Дхармиштха, пожалуйста, прочитай вопрос снова, я уже пробовал этот способ

Vatsh Patel Vatsh Patel
2 февр. 2018 г. 09:27:28
0

У меня была такая же проблема. Однако я добавил следующий код в файл functions.php (спасибо wpbeginner.com), чтобы мои пользовательские типы записей отображались в рубриках. WordPress не отображает пользовательские типы записей в рубриках, пока мы не добавим следующий фильтр.

add_filter('pre_get_posts', 'query_post_type');
function query_post_type($query) {
  if( is_category() ) {
    $post_type = get_query_var('post_type');
    if($post_type)
        $post_type = $post_type;
    else
        $post_type = array('nav_menu_item', 'post', 'your_post_type_name'); // не забудьте добавить nav_menu_item для работы меню!
    $query->set('post_type',$post_type);
    return $query;
    }
}
3 нояб. 2019 г. 23:09:29
7
-2

Перейдите в админ-панель WordPress по пути Настройки > Постоянные ссылки. Убедитесь, что базой для рубрик является "category", а для меток — "tag" (если у вас нет каких-то очень странных специальных настроек) и просто нажмите кнопку "Сохранить изменения", даже если ничего не меняли. Нажатие кнопки может заставить страницы рубрик и меток снова работать.

Не забудьте очистить кеш WordPress для тестирования.

2 февр. 2018 г. 08:59:30
Комментарии

Привет, Вишал, пожалуйста, прочитай вопрос еще раз, я уже пробовал это.

Vatsh Patel Vatsh Patel
2 февр. 2018 г. 09:28:07

Не мог бы ты поделиться ссылкой на свой сайт, чтобы я мог проверить?

vishalprajapati13 vishalprajapati13
2 февр. 2018 г. 09:39:15

macrisondev.com.au

Vatsh Patel Vatsh Patel
2 февр. 2018 г. 09:40:07

Я проверил в консоли и обнаружил одну ошибку: "Uncaught TypeError: Cannot read property 'getContext' of null". Пожалуйста, правильно закройте тег canvas.

vishalprajapati13 vishalprajapati13
2 февр. 2018 г. 10:00:13

Да, я тоже заметил это, но частичный шаблон canvas вызывается только в файле frontpage.php, мы нигде больше на сайте его не используем. Кроме того, весь HTML DOM вообще не загружается, вместо этого происходит перенаправление на страницу 404.php.

Vatsh Patel Vatsh Patel
2 февр. 2018 г. 10:01:47

Пожалуйста, отправьте мне учетные данные wp-admin по email.

vishalprajapati13 vishalprajapati13
2 февр. 2018 г. 10:11:01

Извини, приятель, не могу этого сделать, но могу показать код. Дай знать, что именно ты хочешь увидеть

Vatsh Patel Vatsh Patel
2 февр. 2018 г. 10:11:46
Показать остальные 2 комментариев