Приветствую!
Есть необходимость сделать url-ы записей произвольного типа такими же, как и url-ы у стандартных записей wordpress.
То есть
если запись в рубрике
site.ru/category-name/zapis.html
если запись в подрубрике
site.ru/category-name/children-category-name/zapis.html
При всем при этом мне нужны следующие настройки постоянных ссылок:
Активен радиобаттон произвольно и в поле для ввода следующая конструкция: /%category%/%postname%.html
Код добавления произвольного типа записи и таксономии к нему + функция ддя редактирования url: (тип записи называется lp, таксономия lp_category)
//Тип зааисей lp
add_action( 'init', 'sj_register_lp_post_type' );
function sj_register_lp_post_type() {
// рубрики lp
register_taxonomy('lp_category', array('lp'), array(
'label' => 'Рубрики',
'labels' => array(
'name' => 'Рубрики',
'singular_name' => 'Рубрики',
'search_items' => 'Искать Рубрику',
'all_items' => 'Все рубрики',
'parent_item' => 'Родит. Рубрика',
'parent_item_colon' => 'Родит. Рубрика:',
'edit_item' => 'Ред. Рубрику',
'update_item' => 'Обновить Рубрику',
'add_new_item' => 'Добавить Рубрику',
'new_item_name' => 'Новая Рубрика',
'menu_name' => 'Рубрики',
),
'description' => 'Рубрики для раздела',
'public' => true,
'show_in_nav_menus' => true,
'show_ui' => true,
'show_tagcloud' => false,
'hierarchical' => true,
'show_admin_column' => true,
'rewrite' => array( 'slug' => '%lp_category%', 'with_front' => true ),
'query_var' => '',
) );
//Новый тип записей для lp_category
register_post_type('lp', array(
'label' => 'Записи',
'labels' => array(
'name' => 'Записи',
'singular_name' => 'Запись',
'menu_name' => 'Landing page',
'all_items' => 'Все записи',
'add_new' => 'Добавить запись',
'add_new_item' => 'Добавить новую запись',
'edit' => 'Редактировать',
'edit_item' => 'Редактировать запись',
'new_item' => 'Новая запись',
),
'description' => '',
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_rest' => false,
'rest_base' => '',
'exclude_from_search' => false,
'menu_icon' => admin_url() . 'images/align-right.png',
'capability_type' => 'post',
'map_meta_cap' => true,
'hierarchical' => false,
'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'page-attributes', 'post-formats'),
'taxonomies' => array( 'lp_category' ),
'query_var' => true,
'rewrite' => array( 'slug' => '%lp_category%', 'with_front' => true ),
'has_archive' => 'shows',
) );
}
function wpa_show_permalinks( $post_link, $post ){
if ( is_object( $post ) && $post->post_type == 'lp' ){
$terms = wp_get_object_terms( $post->ID, 'lp_category' );
if( $terms ){
return str_replace( '%lp_category%' , $terms[0]->slug , $post_link );
}
}
return $post_link;
}
add_filter( 'post_type_link', 'wpa_show_permalinks', 1, 2 );
В данный момент на выходе имеем:
если запись в рубрике
site.ru/category-name/zapis
если запись в подрубрике
site.ru/children-category-name/zapis
Кто сталкивался с подобной задачей, поделитесь решением пожалуйста.