WordPress去除分类目录固定连接的category标签(WPJAM失效的情况下)

去除WordPress分类目录固定链接的category标签

起因

之前博客一直是用的疯狂大叔的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;
}
   

相关推荐

WordPress屏蔽英文评论

不想直接关闭评论功能,但是又不想每次都看到一大堆的英文评论,WordPress屏蔽英文评论 //防国外灌水 function scp_com ...

暂无评论

发表评论

您的电子邮件地址不会被公开,必填项已用*标注。