Изменить 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 );
}

Ответы (0 шт):