Пользуясь материалом с сайта
wp-kama.ru/function/register_post_type
#2 Добавление элемента таксономии в ЧПУ
Для нового типа записи можно указать разные ЧПУ с помощью параметра rewrite. Этот пример показывает, как добавить в ЧПУ нового типа записи таксономию.
Допустим, мы регистрируем типа записи catalog и таксономию products для него. Далее, нам нужно чтобы при публикации записи и выборе для нее элемента таксономии. Этот элемент добавлялся в ЧПУ и в результате ссылка на тип записи выглядела так:
site.ru/taxonomy_term_name/post_name.
Для этого нужно указать аргумент slug в параметре rewrite при регистрации типа записи:
'rewrite' => array( 'slug'=>'/%products%', 'with_front' => false ),
Теперь нужно добавить хук, чтобы заменять %products% при получении ссылки на запись через функцию get_permalink() и производные от нее функции:
## Отфильтруем ЧПУ произвольного типа
// сам фильтр: apply_filters( 'post_type_link', $post_link, $post, $leavename, $sample );
add_filter('post_type_link', 'products_permalink', 1, 2);
function products_permalink( $permalink, $post ){
// выходим если это не наш тип записи: без холдера %products%
if( strpos($permalink, '%products%') === FALSE )
return $permalink;
// Получаем элементы таксы
$terms = get_the_terms($post, 'products');
// если есть элемент заменим холдер
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 );
}
В результате чего для кастомного типа записи, мы получим ссылку вида:
http://название сайта/название категории/название поста