Wordpress пользовательский тип permalink, содержащий слиток таксономии
Я пытаюсь создать шаблон permalink для пользовательского типа, который включает одну из его таксономий. Название таксономии известно с самого начала (поэтому я не пытаюсь добавить или смешать все ее таксономии, только конкретную), но значение будет динамическим, конечно.
обычно пользовательский тип permalink строится с помощью rewrite
arg с slug
param, но я не вижу, как я мог бы добавить динамическую переменную в там.
http://codex.wordpress.org/Function_Reference/register_post_type
Я предполагаю, что требуется пользовательское решение, но я не уверен, какой лучший неинтрузивный подход будет.
есть ли известная практика для этого или кто-нибудь недавно построил что-то подобное? Я использую WP 3.2.1 кстати.
1 ответов
после поисков мне удалось создать довольно элегантное решение с помощью 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
arg вот так:
'rewrite' => array('slug' => '%client%')
думаю, я должен был копнуть глубже, прежде чем спрашивать, но, по крайней мере, теперь у нас есть полное решение.