При переходе на страницу таксономии выдает 404 ошибку
Здравствуйте! Подскажите, плз!
Зарегистрирован тип записи book и таксономии /zhanry/ и /avtory/,
register_taxonomy('zhanry', array('book'), $args); $labels = array( 'name' => 'Авторы', 'singular_name' => 'Автор', 'menu_name' => 'Авторы' , 'all_items' => 'Все авторы', 'edit_item' => 'Редактировать автора', 'view_item' => 'Посмотреть автора', 'update_item' => 'Сохранить автора', 'add_new_item' => 'Добавить автора', 'parent_item' => 'Родительская категория', 'search_items' => 'Поиск по авторам', 'back_to_items' => 'Назад на страницу авторов', 'most_used' => 'Популярные авторы', //get_taxonomy_labels() ); $args = array( 'labels' => $labels, 'show_admin_column' => true, 'hierarchical' => true, ); register_taxonomy('avtory', array('book'), $args);
/* Регистрация произвольного типа записи book */ add_action('init', 'my_custom_init'); function my_custom_init(){ register_post_type('book', array( 'labels' => array( 'name' => 'Книги', // Основное название типа записи 'singular_name' => 'Книга', // отдельное название записи типа Book 'add_new' => 'Добавить новую', 'add_new_item' => 'Добавить новую книгу', 'edit_item' => 'Редактировать книгу', 'new_item' => 'Новая книга', 'view_item' => 'Посмотреть книгу', 'search_items' => 'Найти книгу', 'not_found' => 'Книг не найдено', 'not_found_in_trash' => 'В корзине книг не найдено', 'parent_item_colon' => '', 'menu_name' => 'Книги' ), 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => true, 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'menu_position' => 2, 'menu_icon' => 'dashicons-book-alt', 'supports' => array('title','editor','thumbnail','excerpt','comments'), 'rewrite' => array( 'slug'=>'zhanry/%zhanry%', 'with_front' => false ), 'has_archive' => 'book', // если нужна страница архива тут указываем её ярлык а не true ) ); }
## Отфильтруем ЧПУ произвольного типа // сам фильтр: apply_filters( 'post_type_link', $post_link, $post, $leavename, $sample ); add_filter('post_type_link', 'products_permalink', 1, 2); function products_permalink( $permalink, $post ){ // выходим если это не наш тип записи: без холдера %products% if( strpos($permalink, '%zhanry%') === FALSE ) return $permalink; // Получаем элементы таксы $terms = get_the_terms($post, 'zhanry'); // если есть элемент заменим холдер if( ! is_wp_error($terms) && !empty($terms) && is_object($terms[0]) ) $taxonomy_slug = $terms[0]->slug; // элемента нет, а должен быть... else $taxonomy_slug = 'no-zhanry'; return str_replace('%zhanry%', $taxonomy_slug, $permalink ); }
всё сделано как на странице https://wp-kama.ru/function/register_post_type Пункт #3
Так вот, при переходе на страницу /avtory/avtor1/ - всё ок!
Но страница /avtory/ выдает ошибку 404, ровно так же, как и /zhanry/
Шаблон используется taxonomy-avtory.php, но также есть архив
Да, всё обновил.
ЧПУ указано
/%category%/%postname%
Пермалинки в админке обновляли? ЧПУ обновляли?