如何在WordPress永久链接中使用类别ID?
问题描述:
我想使用类似:如何在WordPress永久链接中使用类别ID?
http://example.com/%category_id%/%postname%/
的固定链接结构。
例如,如果一个职位有3个ID的类别,然后在文章的网址会
http://example.com/3/post-name/
有谁知道如何可以做到这一点?我不介意修改WordPress核心。
答
此代码添加%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;
}
您通常不想修改核心;它会在每次更新时断开(这意味着所有的时间,现在WP 3.7已经停止)。像Jan Fabry在下面描述的那样使用过滤器。 – 2013-10-29 05:48:07