404 ошибка при переходе на страницу рубрик?

Ссылка скопирована
0 ответов

Добрый день.

Имеется сайт на WP с самописной темой (не моей). Если в настройке постоянных ссылок указать Произвольно -> /%category%/%postname%/, и создать запись в любой рубрике (например /news/one/) , то появляется 404 ошибка и на саму запись, и при переходе на страницу рубрики /news/. При этом при переходе на страницу рубрики /category/news отображается как надо.

Если в настройке постоянных ссылок указать любой другой вид, то и запись отдаётся нормально.

Никаких дополнительных таксономий на сайте нет, создан только один кастомный тип записи. Если сменить тему, то проблема исчезает, значит проблема именно в теме. Но дело в том, что тема самописаная, её автор недоступен.

Подскажите - в какую сторону копать для решения данной проблемы?

Дополнительно:

Сменить тему на нормальную, естественно.

  • Подскажите - в какую сторону копать для решения данной проблемы?

    Я думаю, что стоит начать с отладки WordPress.

    Результат?

  • Михаил Р., в том и проблема, что никаких ошибок (ни в админке, ни на фронте) не отображается. Отдаётся почему-то 404 шаблон.
  • YaMariya, что написано в .htaccess? что написано в functions.php Вашей темы? Попробуйте использовать плагин Query Monitor, какой результат?
  • Михаил Р., я смогла локализовать проблему! Она возникает при регистрации custom post type

    Код cpt

    add_action('init', 'register_post_types');  function register_post_types() {    register_post_type('services', [     'label'  => 'services',     'labels' => [       'name'               => 'Услуги',       'singular_name'      => 'Услуга',       'add_new'            => 'Добавить услугу',       'add_new_item'       => 'Добавление услуги',       'edit_item'          => 'Редактирование услуги',       'new_item'           => 'Новая услуга',       'view_item'          => 'Смотреть услугу',       'search_items'       => 'Искать услугу',       'not_found'          => 'Не найдено',       'not_found_in_trash' => 'Не найдено в корзине',       'parent_item_colon'  => '',       'menu_name'          => 'Список услуг',     ],     'description'            => '',     'public'                 => true,     // 'publicly_queryable'  => null,      // 'exclude_from_search' => null,      // 'show_ui'             => null,      // 'show_in_nav_menus'   => null,      'show_in_menu'           => true,      // 'show_in_admin_bar'   => null,      'show_in_rest'        => null,      'rest_base'           => null,      'menu_position'       => null,     'menu_icon'           => null,     //'capability_type'   => 'post',     //'capabilities'      => 'post',      //'map_meta_cap'      => null,      'hierarchical'        => false,     'supports'            => ['title', 'custom-fields', 'page-attributes'], // 'title','editor','author','thumbnail','excerpt','trackbacks','custom-fields','comments','revisions','page-attributes','post-formats'     'taxonomies'          => [],     'has_archive'         => false,     'rewrite'             => array('slug' => '/', 'with_front' => false),     'query_var'           => true,   ]); }

    add_action('init', 'register_post_types'); function register_post_types() { register_post_type('services', [ 'label' => 'services', 'labels' => [ 'name' => 'Услуги', 'singular_name' => 'Услуга', 'add_new' => 'Добавить услугу', 'add_new_item' => 'Добавление услуги', 'edit_item' => 'Редактирование услуги', 'new_item' => 'Новая услуга', 'view_item' => 'Смотреть услугу', 'search_items' => 'Искать услугу', 'not_found' => 'Не найдено', 'not_found_in_trash' => 'Не найдено в корзине', 'parent_item_colon' => '', 'menu_name' => 'Список услуг', ], 'description' => '', 'public' => true, // 'publicly_queryable' => null, // 'exclude_from_search' => null, // 'show_ui' => null, // 'show_in_nav_menus' => null, 'show_in_menu' => true, // 'show_in_admin_bar' => null, 'show_in_rest' => null, 'rest_base' => null, 'menu_position' => null, 'menu_icon' => null, //'capability_type' => 'post', //'capabilities' => 'post', //'map_meta_cap' => null, 'hierarchical' => false, 'supports' => ['title', 'custom-fields', 'page-attributes'], // 'title','editor','author','thumbnail','excerpt','trackbacks','custom-fields','comments','revisions','page-attributes','post-formats' 'taxonomies' => [], 'has_archive' => false, 'rewrite' => array('slug' => '/', 'with_front' => false), 'query_var' => true, ]); }

    Т.е. убирая данный cpt - записи, и рубрики начинают работать нормально, отдаётся верный шаблон Подозреваю, что проблема в rewrite правилах. Буду разбираться дальше.

  • YaMariya,

    'rewrite' => array('slug' => '/', 'with_front' => false),

    Попробуйте так:

    'rewrite' => array('slug' => 'services', 'with_front' => false),

    'rewrite' => array('slug' => 'services', 'with_front' => false),

  • Михаил Р., спасибо, Михаил за ответы! Так действительно работает, но добавляется /services/ в url. Это логично, но неправильно по тз. URL должен быть вида site.ru/services-name. Я нашла несколько вариантов решения этой задачи, буду пробовать. Ещё раз спасибо за ответы :)
  • YaMariya, не за что. Url site.ru/services-name без явного указания пути (site.ru/service/service-name) опасное решение из за риска конфликта с другими типами записей. Напишите, к чем в итоге пришли.
  • Михаил Р., да, про вероятность конфликта cpt и записей/страниц я знаю. Предложила заказчику вынести услуги из cpt в обычные страницы с указанием соответствующего шаблона. Т.к. услуг всего 6шт (и в перспективе не больше 10), а обычных записей больше 100 - это кажется логичным решением с учетом требований по url.

    Заказчику вобщем-то эти подробности не важны (а по структуре url - требование seo-специалиста), он пришел с проблемой сломавшегося сайта после другого специалиста. Так что, думаю, возражений не будет.

  • YaMariya, значит, как варианты:
    1. Хранить некоторый список слагов в txt файле, чтобы не создать запись с аналогичным слагом :)
    2. Писать код плагина, который будет иметь свою админку, где перечислить список слагов, которые нельзя будет указать при сохранение записей (или хук wp_insert_post_data, или js код на странице записи).
  • 404 ошибка при переходе на страницу рубрик?

    Проблема 404 была при указание rewrite в cpt:

    'rewrite' => array('slug' => '/', 'with_front' => false),

    Проблема 404 была решена так:

    'rewrite' => array('slug' => 'services', 'with_front' => false),

    'rewrite' => array('slug' => 'services', 'with_front' => false),

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно