Проблема с ЧПУ
При создание 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-го уровня вложенности также работают в нормальном режиме.
Хоть убей не могу понять в чем причина.