Вопрос или проблема
У меня есть пользовательский тип записи ‘BLOG’. Я создал файл archive-blog.php для отображения архивов. Также я зарегистрировал таксономию с названием ‘blog-category’ и создал страницу ‘taxonomy-blog-category’, но при нажатии на термины этой таксономии я перенаправляюсь на страницу 404. Похоже, это проблема с постоянными ссылками. Я сохранил постоянные ссылки и вызвал rewrite_flush(), но это тоже не сработало. Буду признателен за любую помощь. Надеюсь, что получу положительный ответ с вашей стороны. Спасибо заранее.
Таксономия имеет правило перезаписи с названием ‘category’. Я изменил его на другое название и назвал ‘blog-category’, это сработает в моем случае.
Ответ или решение
Когда вы сталкиваетесь с проблемой перенаправления на 404 страницу для страницы пользовательской таксономии в WordPress, это может быть связано с несколькими факторами, связанными с настройками переопределения (rewrite) и конфигурацией пользовательских типов записей и таксономий. Рассмотрим эту проблему более подробно и предложим несколько решений.
1. Проверьте регистрацию таксономии
Убедитесь, что вы правильно зарегистрировали вашу таксономию ‘blog-category’. Вот пример кода для регистрации таксономии:
function create_blog_taxonomies() {
register_taxonomy('blog-category', 'BLOG', array(
'labels' => array(
'name' => _x('Категории блога', 'taxonomy general name'),
'singular_name' => _x('Категория блога', 'taxonomy singular name'),
'search_items' => __('Искать категории блога'),
'all_items' => __('Все категории блога'),
'parent_item' => __('Родительская категория блога'),
'parent_item_colon' => __('Родительская категория блога:'),
'edit_item' => __('Редактировать категорию блога'),
'update_item' => __('Обновить категорию блога'),
'add_new_item' => __('Добавить новую категорию блога'),
'new_item_name' => __('Название новой категории блога'),
'menu_name' => __('Категории блога'),
),
'hierarchical' => true,
'rewrite' => array('slug' => 'blog-category'), // Здесь указываем слаг
));
}
add_action('init', 'create_blog_taxonomies', 0);
Убедитесь, что функция register_taxonomy
вызывается до использования функции flush_rewrite_rules()
.
2. Проверьте настройки постоянных ссылок
После изменения структуры постоянных ссылок или добавления новых записей и таксономий, всегда необходимо обновлять настройки постоянных ссылок. Для этого:
- Зайдите в административную панель WordPress.
- Перейдите в раздел «Настройки» → «Постоянные ссылки».
- Нажмите кнопку «Сохранить изменения» (даже если вы ничего не меняли).
Это позволяет сбросить правила переопределения, исправляя возможные конфликты.
3. Проблемы конфликта с другими плагинами или темами
Иногда конфликты с другими плагинами или темами могут вызывать проблемы с возвратом 404 страниц. Чтобы исключить этот факт:
- Отключите все плагины и проверьте, сохраняется ли ошибка.
- Переключитесь на стандартную тему WordPress (например, Twenty Twenty-One) и проверьте, исчезла ли проблема.
Если ошибка исчерпывается, переключите компоненты один за другим, чтобы выявить источник конфликта.
4. Проверка файла archive-blog.php
Убедитесь, что файл archive-blog.php
корректно обрабатывает запросы таксономии. Он должен содержать необходимые функции для вывода пользовательских записей:
if (have_posts()) :
while (have_posts()) : the_post();
// Ваш код для отображения записей блога
endwhile;
else :
echo '<p>' . __('Нет записей, соответствующих вашему запросу.') . '</p>';
endif;
5. Переопределение запросов
При необходимости можно попробовать добавить дополнительные правила переопределения в функции вашей темы или плагина:
function custom_rewrite_rule() {
add_rewrite_rule('^blog-category/([^/]*)/?', 'index.php?blog-category=$matches[1]', 'top');
}
add_action('init', 'custom_rewrite_rule');
Заключение
Следуя данным рекомендациям, вы сможете устранить проблему перенаправления на 404 страницу для пользовательской таксономии ‘blog-category’. Если проблемы продолжаются, рассмотрите возможность обращения за помощью на специализированные форумы или к профессиональным разработчикам, указывая на все сделанные шаги и результаты. Это поможет быстрее идентифицировать и решить проблему.