设为首页 - 加入收藏
广告 1000x90
您的当前位置:主页 > 自媒体运营 > 正文

wordpress去除url中category的方法大全

来源:网络分享 编辑:引流技巧 时间:2025-05-14

使用过wordpress的朋友应该都知道,默认的分类URL中是有一层category目录的。其实这对一般的使用并不会有太大的影响,并且从SEO方面考虑,如果是根据逻辑结构分配权重,也不会有太大影响。但对于思享来说,多一个没多大意义的category目录,怎么看都不舒服。所以思享包括绝大多数站长都会选择简化URL,将category去掉。

wordpress

functions.php添加代码去除

  • //去除分类标志代码
  • 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版本升级的影响,带category会301重定向到不带的URL。至于是否需要主机支持,我这个小白就不太清楚了,反正我的是支持301并OK的

    修改Wordpress函数去除

    修改目标文件:wp-includes文件夹下的category-template.php

    修改函数:

    搜索(get_category_link()函数里)的以下代码:

  • $catlink $wp_rewrite->get_category_permastruct();
  • 在其后,另起一行加入:$catlink = str_replace('/category' , '' , $catlink);代码作用是,使用字符串替换函数,把获取分类链接函数的分类链接里的/category替换掉。达到去掉分类链接前缀/category的目的。

     

    优点:仅加入一段代码,性能影响忽略不计。适用于对代码稍熟悉的博客。

    缺点:修改代码,博客升级还要修改。且原地址仍可以访问。同样一个页面有两个URL,不利于SEO

    WP No Category Base插件去除

    优点:安装简单,老少皆宜。无论是初建成的博客,还是正打算使用固定链接 /永久链接的博客,还是被搜索引擎收录良好的博客。用不着修改代码,升级之时没有顾虑。使用 301跳转,把原链接进行跳转。最大程度防止搜索引擎降权,防止原链接打不开。

    不足:插件或许会造成空间负担。这里不说是缺点,就是因为,造成的“空间负担”微乎其微,不应该是缺点。比较在意的就不用,推荐使用。

    修改固定链接设置去除

    登录你的Wordpress后台,步骤:

    WordPress后台——设置——固定链接——分类目录前缀里输入半角字符: “.”

    然后保存即可去掉分类前缀category。

    优点:设置简单,老少皆宜。适用于初建成的博客,或刚打算使用固定链接 /永久链接的博客。用不着修改代码,升级之时没有顾虑;用不着插件,不会增加运行负担。

    缺点:原链接无法打开,出现404错误。被搜索引擎收录良好,或分类链接有较多外链链入的博客,可要万分小心了。不要因为操作简单、省时省力而损失了大量外链及权重。除此之外,思享在添加canonical标签的时候,发现目录调用出来的地址是:"https://www.4xseo.com/./seojichu"。总的来说,还是不推荐使用这种方法。

    相关推荐:

    栏目分类

    微商引流技巧网 www.yinliujiqiao.com 联系QQ:1716014443 邮箱:1716014443@qq.com

    Copyright © 2019-2024 强大传媒 网站地图 rss地图

    Top