Проблема с ЧПУ
При создание custom_post_type нужно сделать ЧПУ без указания в ссылке /%post_type%/
Вся проблема в том что post_type 'hierarchical' => true
Часть создания пост тайпа
if ( ! function_exists( 'service_type' ) ) {
// Опишем требуемый функционал
function service_type() {
$labels = array(
'name' => _x( 'Услуги', 'Post Type General Name', 'biz' ),
'singular_name' => _x( 'Услуги', 'Post Type Singular Name', 'biz' ),
'menu_name' => __( 'Услуги', 'biz' ),
'parent_item_colon' => __( 'Родительский:', 'biz' ),
'all_items' => __( 'Все', 'biz' ),
'view_item' => __( 'Просмотреть', 'biz' ),
'add_new_item' => __( 'Добавить новую', 'biz' ),
'add_new' => __( 'Добавить новую', 'biz' ),
'edit_item' => __( 'Редактировать', 'biz' ),
'update_item' => __( 'Обновить', 'biz' ),
'search_items' => __( 'Найти', 'biz' ),
'not_found' => __( 'Не найдено', 'biz' ),
'not_found_in_trash' => __( 'Не найдено в корзине', 'biz' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'page-attributes'),
'public' => true,
'menu_position' => 7,
'menu_icon' => 'dashicons-media-text',
'has_archive' => true,
'rewrite' => false,
'taxonomies' => array( 'model' )
);
register_post_type( 'service', $args );
}
add_action( 'init', 'service_type', 0 ); // инициализируем
}
Часть фильтрации url
function true_post_type_rewrite() {
global $wp_rewrite;
// в данном случае мой тип записей был - Услуги (service)
// этот код позволит перезаписать урлы
// параметры add_rewrite_tag('%название_тега%', '%маска_символов%', '%url_параметр%')
$wp_rewrite->add_rewrite_tag("%service%", '([^/]+)', "service=");
$wp_rewrite->add_permastruct('service', '%service%');
}
add_action( 'init', 'true_post_type_rewrite');
function true_rewrite_conflicts( $request ) {
if(!is_admin())
$request['post_type'] = array('service', 'post', 'page'); // перечисляем типы записей с подобной структурой пермалинков
return $request;
}
add_filter( 'request', 'true_rewrite_conflicts' );
Всё работает до 3-го уровня вложенности например
/yuridicheskie-uslugi/registratsiya-biznesa/registratsiya-ao/
Ссылка не работает и выпадает в 404 в тоже время
?service=yuridicheskie-uslugi/registratsiya-biznesa/registratsiya-ao отрабатывает
А все страницы до 3-го уровня вложенности также работают в нормальном режиме.
Хоть убей не могу понять в чем причина.