Roman52
@Roman52
WordPress Developer || Front End Developer

Как изменить URL записей таксономии worspress?

Приветствую!
Есть необходимость сделать 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

Кто сталкивался с подобной задачей, поделитесь решением пожалуйста.
  • Вопрос задан
  • 1755 просмотров
Пригласить эксперта
Ответы на вопрос 1
it_proger29
@it_proger29
Битрикс
https://misha.agency/wordpress/taksonomii-v-url-ti...
Такое решение подойдет?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы