代码如下:
// 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://boke.slhq.cn/tag/我的网站 改成 https://boke.slhq.cn/tag/888/ 这种格式,这种格式的好处就是方便管理,比如生成静态页或者提交到搜索引擎能一眼看清楚,默认的中文路径需要经过转码之类的,我的后台有不少404链接,都是tag转码的问题,所以我直接用id格式就避免了这一类的问题。
使用方法:把上面的代码放在你wordpress 的functions.php 文件最底下,之后回到后台设置中,选择路径,保存一下就生效了。需要注意,如果已经有了缓存,一定要清除一下缓存。
这个方法只是重写了tag 的url而已,所以,之前默认的访问方式还是有效的,这样就不会导致大批量的404了。