起因
之前博客一直是用的疯狂大叔的CU主题,很有逼格,但是不知道怎么回事突然想用用大胡子的Autumn主题,毕竟买来也没有用过(更多的是因为博客的百度排名从第二名掉到了第二页,CU主题过于有逼格,内容显得过于简洁,想换个主题布局及丰富一些内容,测试SEO的效果)。换了主题之后,就出现了分类目录固定链接多出了category标签的情况,因为我每个WordPress都会安装我爱水煮鱼的WPJAM BASIC插件,而这个插件自带去除category标签的功能,但是我的固定链接设置的是 www.xxx.com/%category%/%post_id%.html(因为我想在文章页的链接显示分类目录的别名)
然后WPJAM BASIC插件的去除category标签功能就失效了
但是换主题之前的CU主题却没有出现这个问题,然后就在出cu主题的function.php中看到了下面这段代码,把这段代码加入现在主题的function中,问题解决。然后我百度了相关的WordPress去除category标签的相关内容,得到了差不多的代码。也有用插件解决问题的。
WordPress去除分类目录固定连接的category标签,将下面代码放入function.php中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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
|
//去除分类标志代码 add_action( 'load-themes.php' , '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' ); function no_category_base_refresh_rules() { global $wp_rewrite ; $wp_rewrite -> flush_rules(); } // register_deactivation_hook(__FILE__, 'no_category_base_deactivate'); // function no_category_base_deactivate() { // remove_filter('category_rewrite_rules', 'no_category_base_rewrite_rules'); // // We don't want to insert our custom rules again // no_category_base_refresh_rules(); // } // Remove category base add_action( 'init' , 'no_category_base_permastruct' ); function no_category_base_permastruct() { global $wp_rewrite , $wp_version ; if (version_compare( $wp_version , '3.4' , '<' )) { // For pre-3.4 support $wp_rewrite -> extra_permastructs[ 'category' ][0] = '%category%' ; } else { $wp_rewrite -> extra_permastructs[ 'category' ][ 'struct' ] = '%category%' ; } } // Add our custom category rewrite rules add_filter( 'category_rewrite_rules' , 'no_category_base_rewrite_rules' ); function no_category_base_rewrite_rules( $category_rewrite ) { //var_dump($category_rewrite); // For Debugging $category_rewrite = array (); $categories = get_categories( array ( 'hide_empty' => false)); foreach ( $categories as $category ) { $category_nicename = $category -> slug; if ( $category -> parent == $category -> cat_ID) // recursive recursion $category -> parent = 0; elseif ( $category -> parent != 0) $category_nicename = get_category_parents( $category -> parent, false, '/' , true) . $category_nicename ; $category_rewrite [ '(' . $category_nicename . ')/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$' ] = 'index.php?category_name=$matches[1]&feed=$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]' ; } // Redirect support from Old Category Base global $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); // For Debugging return $category_rewrite ; } // Add 'category_redirect' query variable add_filter( 'query_vars' , 'no_category_base_query_vars' ); function no_category_base_query_vars( $public_query_vars ) { $public_query_vars [] = 'category_redirect' ; return $public_query_vars ; } // Redirect if 'category_redirect' is set add_filter( 'request' , 'no_category_base_request' ); function no_category_base_request( $query_vars ) { //print_r($query_vars); // For Debugging if (isset( $query_vars [ 'category_redirect' ])) { $catlink = trailingslashit(get_option( 'home' )) . user_trailingslashit( $query_vars [ 'category_redirect' ], 'category' ); status_header(301); header( "Location: $catlink" ); exit (); } return $query_vars ; } |
暂无评论