2011-05-28 53 views
2

我想使用类似:如何在WordPress永久链接中使用类别ID?

http://example.com/%category_id%/%postname%/ 

的固定链接结构。
例如,如果一个职位有3个ID的类别,然后在文章的网址会

http://example.com/3/post-name/ 

有谁知道如何可以做到这一点?我不介意修改WordPress核心。

+0

您通常不想修改核心;它会在每次更新时断开(这意味着所有的时间,现在WP 3.7已经停止)。像Jan Fabry在下面描述的那样使用过滤器。 – 2013-10-29 05:48:07

回答

1

此代码添加%category_id%重写标记,并过滤后期固定链接以将其替换为实际类别标识(如果存在多个类别,则为最低标识)。你可以把它放在一个插件或你的主题文件中。

add_action('init', 'so6159452_init'); 
function so6159452_init() 
{ 
    add_rewrite_tag('%category_id%', '([0-9]+)'); 
} 

add_filter('post_link', 'so6159452_post_link', 10, 2); 
function so6159452_post_link($permalink, $post) 
{ 
    if (false !== strpos($permalink, '%category_id%')) { 
     $cats = get_the_category($post->ID); 
     if ($cats) { 
      usort($cats, '_usort_terms_by_ID'); // order by ID 
      $category_id = $cats[0]->cat_ID; 
     } else { 
      // Error: no category assigned to this post 
      // Just use a dummy variable 
      $category_id = '0'; 
     } 
     $permalink = str_replace('%category_id%', $category_id, $permalink); 
    } 
    return $permalink; 
} 
相关问题