2011-05-28 70 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; 
}