WordPress 分类目录 URL 中去掉 category 最佳方法

2022-02-1009:39:36网站建设与开发Comments1,901 views字数 1292阅读模式

WordPress 默认的分类目录 URL 中是带 category 的,比如我爱水煮鱼的 WordPress 的分类目录的 URL:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/23128.html

https://blog.wpjam.com/category/wordpress/文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/23128.html

有些用户博客的分类就是二级目录,希望去掉分类目录 URL 中的 category,实现这样的 URL:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/23128.html

https://blog.wpjam.com/wordpress/文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/23128.html

这个如何实现呢?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/23128.html

方式一:使用插件

网上有很多这方面功能的 WordPress 插件,都可以去掉分类目录 URL 中的 category,这些插件的实现方式是把所有的分类都写入 WordPress 的 rewrite 规则文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/23128.html

这样虽然可以解决问题,但是也会造成 rewrite 规则会非常臃肿,反而会使得 WordPress 变慢,并且每次添加分类都要去刷新 rewrite 规则。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/23128.html

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

另外 WordPress 还有一个非常方便的方法,可以说是最简化去掉分类目录 URL 中的 category。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/23128.html

只需要在 WordPress 后台,点击「设置」菜单下的「固定链接」子菜单,将「分类目录前缀」设置为 . 就可以:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/23128.html

WordPress 分类目录 URL 中去掉 category 最佳方法文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/23128.html

方式三:最佳方法

如果仔细观察一下去掉 category 的分类目录和 WordPress 的页面的 URL:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/23128.html

去掉 category 的分类目录 URL:
https://blog.wpjam.com/wordpress/文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/23128.html

WordPress 的页面 URL:
https://blog.wpjam.com/about/文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/23128.html

是不是这两种页面的页面rewrite 规则是不是一样的,那么我们可以直接使用页面的 rewrite 规则来处理了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/23128.html

当 WordPress 进入页面 rewrite 规则的时候,我们首先判断一下,当前的 pagename 是不是某个分类的 slug,如果是,就把当前的 query_var 中的 pagename 换成 category_name,这样就可以实现了分类目录页面的正确跳转。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/23128.html

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

WPJAM Basic 的「优化设置」中的「功能增强」也集成了这个功能,并且还额外增加一个选项,如果博客自定义了其他的自定义分类模式,可以选择设置哪个分类模式应用该功能:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/23128.html

WordPress 分类目录 URL 中去掉 category 最佳方法文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/23128.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/cms/23128.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定