如何在WordPress永久链接中使用类别ID?
我想使用类似于:如何在WordPress永久链接中使用类别ID?,wordpress,permalinks,Wordpress,Permalinks,我想使用类似于: http://example.com/%category_id%/%postname%/ 用于永久链接结构。 例如,如果一篇文章有一个ID为3的类别,那么该文章的URL将是 http://example.com/3/post-name/ 有人知道如何做到这一点吗?我不介意修改WordPress core。此代码添加了%category\u id%rewrite标记,并过滤post permalinks以实际的category id替换它们(如果有多个类别,则最低)。您可以将
http://example.com/%category_id%/%postname%/
用于永久链接结构。例如,如果一篇文章有一个ID为3的类别,那么该文章的URL将是
http://example.com/3/post-name/
有人知道如何做到这一点吗?我不介意修改WordPress core。此代码添加了
%category\u id%
rewrite标记,并过滤post permalinks以实际的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在下文中所述。