При переходе на страницу таксономии выдает 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%
Пермалинки в админке обновляли? ЧПУ обновляли?