WordPress去掉category(代码实现)
2015-01-06 seo , category , wordpress url优化

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分类目录和页面链接后面添加斜杠/

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

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

  2. 添加后白屏

    1. dean dean

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

  3. dean dean

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

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

  4. 写的不错哈,支持一下 http://www.xevip.cn

Leave a Reply

如果您是第一次在本站留言,需要审核后才会显示内容!