• 学派吧-由新云网络独家赞助-https://www.sq9.cn。

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

wordpress admin 2年前 (2019-01-25) 1194次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

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

方式一:使用插件

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

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

另外 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,这样就可以实现了。

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);

总结

以上就是本节的教程-欢迎关注我们学派吧,


极客公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何去掉分类目录 URL 中的 category-wordpress教程
喜欢 (0)
[pay@sq9.cn]
分享 (0)
关于作者:
腾讯云-运维运维 QQ 690624
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址