Изменить url для таксономии custom post type
Всем привет! У меня есть собственный пост тайп "autoschool", в нём есть таксономия "city", в которой есть разделения на города, например Лондон, Париж и т.д. Мне нужно чтобы url (slug) записи постов "autoschool", имели следующий путь domain.com/название-города/пост (пример, domain.com/london/school-name)
Вот мой код, здесь уже настроен путь для страницы архива таксономии, он отображаеться без slug пост-тайпа, но вот для записи этого сделать не получается, может кто сталкивался?
<?php
add_action('init', 'autoschool_post_type');
function autoschool_post_type(){
register_post_type('autoschool', 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' => array('slug' => 'city'),
'has_archive' => 'autoschools', // если нужна страница архива тут указываем её ярлык а не true
'capability_type' => 'post',
'hierarchical' => false,
'menu_position' => null,
'supports' => array('title','editor','author','thumbnail','excerpt','comments')
) );
}
// хук, через который подключается функция
// регистрирующая новые таксономии (create_book_taxonomies)
add_action( 'init', 'create_autoschool_taxonomies' );
// функция, создающая 2 новые таксономии "genres" и "writers" для постов типа "book"
function create_autoschool_taxonomies(){
// Добавляем древовидную таксономию 'city' (как категории)
register_taxonomy('city', array('autoschool'), array(
'hierarchical' => true,
'labels' => array(
'name' => _x( 'City', 'taxonomy general name' ),
'singular_name' => _x( 'City', 'taxonomy singular name' ),
'search_items' => __( 'Search City' ),
'all_items' => __( 'All City' ),
'parent_item' => __( 'Parent City' ),
'parent_item_colon' => __( 'Parent City:' ),
'edit_item' => __( 'Edit City' ),
'update_item' => __( 'Update City' ),
'add_new_item' => __( 'Add New City' ),
'new_item_name' => __( 'New CityName' ),
'menu_name' => __( 'City' ),
),
'show_ui' => true,
'query_var' => true,
'rewrite' => [
'slug' => '/',
'with_front' => false
]
));
}
## Отфильтруем ЧПУ произвольного типа
// сам фильтр: apply_filters( 'post_type_link', $post_link, $post, $leavename, $sample );
add_filter('post_type_link', 'products_permalink', 1, 2);
function autoschool_permalink( $permalink, $post ){
// выходим если это не наш тип записи: без холдера %products%
if( strpos($permalink, '%products%') === FALSE )
return $permalink;
// Получаем элементы таксы
$terms = get_the_terms($post, 'city');
// если есть элемент заменим холдер
if( ! is_wp_error($terms) && !empty($terms) && is_object($terms[0]) )
$taxonomy_slug = $terms[0]->slug;
// элемента нет, а должен быть...
else
$taxonomy_slug = 'no-products';
return str_replace('%products%', $taxonomy_slug, $permalink );
}