最近在开发一个项目时用户需要把分类和标签页面的URL添加上.html后缀,代码君为了省事果断上百度搜索了一番,找到的方法一大堆,比较靠谱的就是使用插件,用代码实现的要么太复杂,要不就是直接找不到页面,无奈我只是想实现一个小小的功能没必要再安装几个插件吧而且设置起来太麻烦用户不一定会怎么办,于是自己动手查看了官方的文档以及大量的测试终于找到一个可以用纯代码实现给wordpress分类、页面、标签的URL添加html后缀的方法。我们只需要把写好的代码放到主题的functions.php中然后重新保存下固定链接一切就操作完成了,比网站的方法更靠谱实用,下面我就直接上代码。
功能代码
- function custom_page_rules() {
- global $wp_rewrite;
- $wp_rewrite->page_structure = $wp_rewrite->root .'post/%pagename%.html';
- $wp_rewrite->extra_permastructs['post_tag']['with_front'] = '';
- $wp_rewrite->extra_permastructs['post_tag']['struct'] = $wp_rewrite->extra_permastructs['post_tag']['with_front'] . 'tag/%post_tag%.html';
- $wp_rewrite->extra_permastructs['category']['with_front'] = 'category';
- $wp_rewrite -> extra_permastructs['category']['struct'] = $wp_rewrite->extra_permastructs['category']['with_front'].'/%category%.html';
- }
- add_action ( 'init', 'custom_page_rules' );
最终效果:
- 分类URL样式:http://www.chenxingweb.com/category/demo.html
- 标签URL样式:http://www.chenxingweb.com/tag/demo.html
- 页面URL样式:http://www.chenxingweb.com/post/demo.html
备注:这段代码不会影响到文章页面的URL样式,文章页面的URL样式依然是在固定链接中定义的。
代码解释
代码很简洁主要就是对$wp_rewrite全局函数的部分内容进行重写然后实现我们需要的功能,上面的diamagnetic包含了 page页面自定义URL样式、tag页面自定义URL样式、 category页面自定义URL样式 大家可以根据自己的需求做删减和修改。代码亲测可用效果杠扛滴,如遇到问题可以在评论区给我留言。