比尔云BierYun--阿里云最新优惠活动
阿里云优惠码丨阿里云代金券

WordPress的去除category分类目录“类别”路径方法

不少折腾WordPress的朋友都希望去掉分类链接中默认就添加的/ category /目录标志,网上很多这方面的教程,据子凡目前所知,应该有三种方法可以去除分类category标志,这里子凡依然把所有的方法列举出来,但是子凡还是比较推荐使用以下推荐的代码或插件来实现效果,其它方法虽然可以达到效果,但都是不太完美的。比尔云建站等网站目前也都是选择去掉了/类别/目录,使用的正是方法二和方法三。

方法一(不推荐使用)

进入WordPress后台 – >设置 – >固定链接

如上图所示,就是在将“分类目录前缀”项设置为“”,这种方法也可以去除类别,虽然设置简单,但是效果不理想,容易出现错误。

方法二(推荐)

这里子凡推荐一个比较完善的插件(WP No Category Base)来去除category。

WP No Category Base插件功能简单,就是仅仅为了去除/ category /目录标志,直接安装,不需要任何设置就可以使用。

WP No Category Base插件下载

官方下载 推荐后台直接搜索安装

方法三(代码版,需要折腾代码)

其实第三种方法适合于喜欢折腾的朋友,特别是不喜欢用插件的朋友,这里的代码其实就是WP No Category Base插件,直接将一下插件代码复制到当前主题Functions.php中即可:

1
2
3
4
五
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
三十
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/ *
 插件名称:WP无分类库
 插件URI:http://blinger.org/wordpress-plugins/no-category-base/
 说明:从类别永久链接中删除“/ category”。
 版本:1.1.1
 作者:iDope
 作者URI:http://efextra.com/
 * /
 
//刷新关于激活/关闭/类别更改的规则 
register_activation_hook __ FILE __  'no_category_base_refresh_rules' ; 
add_action 'created_category'  'no_category_base_refresh_rules' ; 
add_action 'edited_category'  'no_category_base_refresh_rules' ; 
add_action 'delete_category'  'no_category_base_refresh_rules' ; 
函数 no_category_base_refresh_rules  { 
	global  $ wp_rewrite; 
	$ wp_rewrite  - >  flush_rules ; 
}
 
register_deactivation_hook __ FILE __  'no_category_base_deactivate' ; 
函数 no_category_base_deactivate  { 
	remove_filter 'category_rewrite_rules'  'no_category_base_rewrite_rules' ; 
	//我们不想再插入我们的自定义规则 
	no_category_base_refresh_rules ; 
}
 
//删除category base 
add_action 'init'  'no_category_base_permastruct' ; 
函数 no_category_base_permastruct  { 
	全局 $ wp_rewrite  $ wp_version ; 
	if  version_compare $ wp_version  '3.4'  '<'  { 
		//用于3.4以前的版本支持
		$ wp_rewrite  - >  extra_permastructs [ 'category' ] [ 0 ]  =  '%category%' ; 
	}  别的 { 
		$ wp_rewrite  - >  extra_permastructs [ 'category' ] [ 'struct' ]  =  '%category%' ; 
	} 
}
 
//添加我们的自定义类别重写规则 
add_filter 'category_rewrite_rules'  'no_category_base_rewrite_rules' ; 
函数 no_category_base_rewrite_rules $ category_rewrite  { 
	// var_dump($ category_rewrite); //用于调试
 
	$ category_rewrite  =  array ; 
	$ categories  = get_categories array 'hide_empty'  =>  false ; 
	foreach  $  category  $ category  { 
		$ category_nicename  =  $ category  - >  slug ; 
		if  $ category  - >  parent  ==  $ category  - >  cat_ID //递归递归
			$ category  - >  parent  =  0 ;
		elseif  $ category  - >  parent  !=  0 
			$ category_nicename  = get_category_parents $ category  - >  parent  false  '/'  true   $ category_nicename ; 
		$ category_rewrite [ '('   $ category_nicename   ')/(?:进料/)?(进料| RDF | RSS | RSS2 |原子)/ $?' ]  =  “的index.php CATEGORY_NAME = $匹配[1]&饲料? = $ matches [2]' ; 
		$ category_rewrite [ '('   $ category_nicename   ')/ page /?([0-9] {1,})/?$' ]  =  'index.php?category_name = $ matches [1]&paged = $ matches [2]' ; 
		$ category_rewrite [ '('   $ category_nicename   ')/?$' ]  =  'index.php?category_name = $ matches [1]' ; 
	} / / 
	重定向支持从旧的分类基地
	全球 $ wp_rewrite ; 
	$ old_category_base  = get_option 'category_base' ?get_option 'category_base'   'category' ; 
	$ old_category_base  =  trim $ old_category_base  '/' ; 
	$ category_rewrite [ $ old_category_base   '/(.*)$' ]  =  'index.php?category_redirect = $ matches [1]' ;
 
	//后续代码var_dump($ category_rewrite); //对于调试
	返回 $ category_rewrite ; 
}
 
//对于调试
// add_filter('rewrite_rules_array','no_category_base_rewrite_rules_array'); 
//函数no_category_base_rewrite_rules_array($ category_rewrite){ 
// var_dump($ category_rewrite); //用于调试
//}
 
//添加'category_redirect'查询变量 
add_filter 'query_vars'  'no_category_base_query_vars' ; 
函数 no_category_base_query_vars $ public_query_vars  { 
	$ public_query_vars [ ]  =  'category_redirect' ; 
	返回 $ public_query_vars ; 
}
 
//设置'category_redirect'后重定向 
add_filter 'request'  'no_category_base_request' ; 
函数 no_category_base_request $ query_vars  { 
	// print_r($ query_vars); //用于调试
	if  isset $ query_vars [ 'category_redirect' ]  { 
		$ catlink  = trailingslashit  get_option 'home'  user_trailingslashit $ query_vars [ 'category_redirect']  'category' ; 
		status_header 301 ; 
		标题“位置:$ catlink; 
		exit ; 
	} 
	return  $ query_vars ; 
}

 

比尔云提示:如果你的是新站,可以考虑去除/类别/目录;如果你的是老站(也就是说搜索引擎已经收录了分类目录),使用这个插件后,注意做一下分类链接的301跳转。

未经允许不得转载:比尔云 » WordPress的去除category分类目录“类别”路径方法
分享到: 更多 (0)

评论 抢沙发

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

强烈推荐

高性能SSD云服务器ECS抗攻击,高可用云数据库RDS