我们都知道wordpress文章标签默认是中文,WordPress 文章 tag 标签的固定链接默认使用标签的别名,如果标签没有设置别名,并且标签名字带中文,那么固定链接就会带有中文,然后被 urlencode 转义成类似下面的字符串:
比如:
http://blog.r8vi.com/tag/寻人找人/
http://blog.r8vi.com/tag/%e5%af%bb%e4%ba%ba%e6%89%be%e4%ba%ba/
标签少的时候可以自己修改别名,比如拼音或者英文,但是有一个缺点就是同音词的时候不好区分,只能在别名后面加-1,-2 这样的区分,比如手机,收集,手记,遇到同音词的时候就很不好,展示方式看个人喜欢,除了中文展示会转码外,并没什么卵用,个人觉得用 ID 方式最好。
但是文章的链接在固定链接设置中可以设定使用 post_id 作为文章/页面「固定链接」形式,但是无法设置文章 tag 标签也使用 ID 形式固定链接。
那么,WordPress 文章 tag 标签可以设置成像文章一样使用 ID 形式固定链接吗?
方法:纯代码 修改 WordPress 的文章TAG标签用ID显示
把下面代码放到主题根目录下 functions.php 文件即可,需要注意的是代码改好后,需要进入后台,设置-固定链接-保存一下或者修改一下重新改回来保存然固定链接生效,否则新标签链接全部 404。
将以下代码加在主题目录的 functions.php 中即可实现,添加代码后需要进入后台重新保存一下固定链接。
functions.php-----------文件是在主题根目录,在后台里就可以看到
// 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; }
我的这个网站由于之前没有设置,现在设置没什么用了。
所以我用另外的网站设置了一下,效果如下:https://www.nyhywj.com/tag/hyxf
5是tag的ID