WordPress 设置中可以设定使用 post_id 作为文章/页面「固定链接」形式,但是无法设置文章 tag 标签也使用 ID 形式固定链接。
WordPress 文章 tag 标签的固定链接默认使用标签的别名,如果标签没有设置别名,并且标签名字带中文,那么固定链接就会带有中文,然后被 urlencode 转义成类似下面的字符串:
标签「搬瓦工」链接:https://cyhour.com/tag/%E6%90%AC%E7%93%A6%E5%B7%A5/
那么,WordPress 文章 tag 标签可以设置使用 ID 形式固定链接吗?
方法一:使用 WPJAM「分类管理插件」 配置
方法二:纯代码 修改 WordPress 的文章TAG标签用ID显示
把下面代码放到主题根目录下 functions.php 文件即可,需要注意的是代码改好后,需要进入后台,设置-固定链接-保存一下或者修改一下重新改回来保存然固定链接生效,否则新标签链接全部 404。
// WordPress 文章标签以id方式展示
add_action('generate_rewrite_rules','tag_rewrite_rules');
add_filter('term_link','tag_term_link',10,3);
add_action('query_vars', 'tag_query_vars');
function tag_rewrite_rules($wp_rewrite){
$new_rules = array(
'tag/(\d+)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?tag_id=$matches[1]&feed=$matches[2]',
'tag/(\d+)/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?tag_id=$matches[1]&feed=$matches[2]',
'tag/(\d+)/embed/?$' => 'index.php?tag_id=$matches[1]&embed=true',
'tag/(\d+)/page/(\d+)/?$' => 'index.php?tag_id=$matches[1]&paged=$matches[2]',
'tag/(\d+)/?$' => 'index.php?tag_id=$matches[1]',
);
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
function tag_term_link($link,$term,$taxonomy){
if($taxonomy=='post_tag'){
return home_url('/tag/'.$term->term_id);
}
return $link;
}
function tag_query_vars($public_query_vars){
$public_query_vars[] = 'tag_id';
return $public_query_vars;
}
有需要不妨试试。
Comments:0