После дополнительных поисков мне удалось создать довольно элегантное решение с использованием фильтра custom_post_link
.
Допустим, у вас есть project
Пользовательский тип с client
Таксономией.Добавьте этот хук:
function custom_post_link($post_link, $id = 0)
{
$post = get_post($id);
if(!is_object($post) || $post->post_type != 'project')
{
return $post_link;
}
$client = 'misc';
if($terms = wp_get_object_terms($post->ID, 'client'))
{
$client = $terms[0]->slug;
//Replace the query var surrounded by % with the slug of
//the first taxonomy it belongs to.
return str_replace('%client%', $client, $post_link);
}
//If all else fails, just return the $post_link.
return $post_link;
}
add_filter('post_type_link', 'custom_post_link', 1, 3);
Затем, при регистрации пользовательского типа, установите аргумент rewrite
следующим образом:
'rewrite' => array('slug' => '%client%')
Я думаю, мне нужно было копать глубже, прежде чем спрашивать, нопо крайней мере, сейчас у нас есть полное решение.