Wordpress自定义类型永久链接包含分类法slug

时间:2011-10-11 08:48:16

标签: wordpress taxonomy permalinks custom-type

我正在尝试为自定义类型创建一个永久链接模式,其中包含一个分类法。分类法名称从一开始就是已知的(所以我不是要添加或混合所有分类法,只是特定的分类法),但当然,价值将是动态的。

通常,自定义类型永久链接是使用rewrite arg和slug参数构建的,但我不知道如何在其中添加动态变量。

http://codex.wordpress.org/Function_Reference/register_post_type

我猜测需要一个自定义解决方案,但我不确定最好的非侵入式方法是什么。

是否有一个已知的做法,或者有人最近建造了类似的东西?我正在使用WP 3.2.1 btw。

1 个答案:

答案 0 :(得分:3)

经过更多搜索后,我设法使用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%')

我想在问之前我应该​​深入挖掘,但至少我们现在有一个完整的解决方案。