WordPress去掉category(代码实现)

爱必应

文章目录

WordPress去掉分类目录链接中的category最有效的方法

WordPress去掉category用代码实现方法

直接贴代码:

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
70
71
72
73
74
75
76
77
78
/*  
*WordPress去除category
*/
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;   
}

将上面代码加到主题functions.php中?>前保存,回到后台固定链接设置点击“保存更改”两次。

如果前台分类目录页面不能访问,就再固定链接设置更新下;

回到目录页面就能看到链接中的category被去除了,访问原来带category链接也会跳转到新链接上。

去除分类目录中category的相关文章

一、wordpress去掉链接中category【不用插件

此方法在有些主题中不管用,会出错!

二、WordPress去除目录链接中category,原链接301重定向

如果使用了其他的代码后,原带category链接还能访问可按上文章设置重定向

更多WordPress链接URL优化:

建议去除目录页面中的category后,目录页面和单页面链接结尾加上/就更完美了!

WordPress分类目录和页面链接后面添加斜杠/

原文链接:,转发请注明来源!

发表评论

  • 6 Responses to “WordPress去掉category(代码实现)”
    • 李建林博客

      我直接用的WP No Category Base插件,没修改代码,也去掉了,挺方便的

      回复
      • 现在好多人都是找代码实现的,好多主题都自带了WP No Category Base的效果

        爱必应 回复
    • 幻影雪狮

      添加后白屏

      回复
      • 将上面代码加到主题functions.php中?>前保存,回到后台固定链接设置点击“保存更改”两次。

        dean 回复
    • dean

      对了,aibing,我搬迁了,然后更换域名,用这方法不行,是不是哪里还要修改?
      因为只有默认的可以用

      回复
      • 是加在functions.php文件里么?上门代码是用的No Category Base插件中的代码,我用了几次都能成功去Category的,要不你直接用No Category Base插件吧

        爱必应 回复