去掉分类目录 URL 中的 category - wordpress教程

为了SEO我们常常需要对wordpress做一定优化,今天先给大家分享一个,去掉category的方法,降低目录的深度。

WordPress默认生成的分类目录 URL 中是带 category 的,比如我爱水煮鱼的 WordPress 的分类目录的 URL https://blog.wpjam.com/category/wordpress/ 就带了 category。那么如何去掉呢?

方式一:使用插件

去掉分类目录 URL 中的 category - wordpress教程-Npcink
去掉分类目录 URL 中的 category - wordpress教程-Npcink

No Category Base (WPML) – 去除WordPress 分类链接中 category

网上有很多相关的 WordPress 插件,都可以解决这个问题,不过大部分插件都是把所有的分类都写入 WordPress 的 rewrite 规则,这样会造成 rewrite 规则会非常臃肿,反而会使得 WordPress 变慢。

方式二:设置分类目录前缀

另外 WordPress 还有一个非常方便的方法,可以说是最简化去掉分类目录 URL 中的 category。只需要在 WordPress 后台,点击「设置」菜单下的「固定链接」子菜单,将「分类目录前缀」设置为 . 就可以:

英文输入法下的“句号”:半角逗号

去掉分类目录 URL 中的 category - wordpress教程
去掉分类目录 URL 中的 category - wordpress教程

方式三:代码版(老手推荐)

如果仔细观察一下去掉 category 的分类目录 url:https://blog.wpjam.com/wordpress/,是不是和 WordPress 的页面规则是一样的,比如我爱水煮鱼的关于页面:https://blog.wpjam.com/about/,那么我们可以使用页面的 rewrite 规则来处理。

当 WordPress 进入页面 rewrite 规则的时候,我们判断一下,当前的 pagename 是不是某个分类的 slug,如果是,就把当前的 query_var 中的 pagename 换成 category_name,这样就可以实现了。

将以下代码添加至主题根目录下的functions.php文件的<?php下保存即可。

add_filter('request', function($query_vars) {
 if(!isset($_GET['page_id']) && !isset($_GET['pagename']) && !empty($query_vars['pagename'])){
 $pagename = $query_vars['pagename'];
 $categories = get_categories(['hide_empty'=>false]);
 $categories = wp_list_pluck($categories, 'slug');

 if(in_array($pagename, $categories)){
 $query_vars['category_name'] = $query_vars['pagename'];
 unset($query_vars['pagename']);
 }
 }

 return $query_vars;
});

add_filter('pre_term_link', function($term_link, $term){
 if($term->taxonomy == 'category'){
 return '%category%';
 }

 return $term_link;
}, 10, 2);

教程

如何使用阿里云 OSS 图片服务 - WordPress教程

2019-4-10 23:55:15

教程

禁止非管理员访问后台并限制访问后台登录注册

2019-4-18 16:20:18

⚠️
Npcink上的部份代码及教程来源于互联网,仅供网友学习交流,若您喜欢本文可附上原文链接随意转载。
无意侵害您的权益,请发送邮件至 1355471563#qq.com 或点击右侧 私信:Muze 反馈,我们将尽快处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索