去除WordPress网站链接中“category”的四种方法

简介: 四招教你去除wordpress网站中的“category”

作为wordpress的重度用户,对于wordpress网站的每一个细节我都很在意。

相信很多站长和我一样!

网站搭建起来,我发现url中一直有一个“category”,我表示很不爽,想尽办法要把这个万恶的单词给去掉。结合网友们分享的教程和个人总结,去掉“category”的方法无非就是使用插件、代码实现、修改函数、修改固定链接方式四种有效方法。

去除WordPress网站链接中category的四种方法

一、使用插件

如果你是傻瓜式建站,没有一定的代码基础,又很介意url中的“category”的话,建议使用插件,直接在wp后台搜索插件安装就可以!然后刷新网站就会发现url中的“category”已经被顺利去除。

推荐两款插件:

No category parents:作者milardovich,上面插件的升级版,不仅能去掉分类链接的前缀category,还能去掉父分类 parent-category。例如能把“/category/parent-category/my-category/”换成“/my-category/”形式。

下载地址:WordPress官方下载作者milardovich博客下载

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

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

WP No Category Base:作者iDope,是为去除固定链接中分类链接里的category而开发出来的一款wordpress插件,被下载近5万次。安装启用此插件后,对原来的分类地址做了301跳转,对SEO优化有好处,把降权风险降到最低。

下载地址:WordPress官方下载作者iDope博客下载

但是不得不说的是,wp使用插件过多,会导致网站加载缓慢。这是使用插件的方式解决问题的弊病。

二、使用代码去除“cotegory”

直接贴如下代码,将下面代码加到主题functions.php中?>前保存,回到后台固定链接设置点击“保存更改”两次。如果前台分类目录页面不能访问,就再固定链接设置更新下;回到目录页面就能看到链接中的category被去除了,访问原来带category链接也会跳转到新链接上。

  1. /*  
  2. *WordPress去除category
  3. */
  4. add_action( 'load-themes.php',  'no_category_base_refresh_rules');
  5. add_action('created_category', 'no_category_base_refresh_rules');
  6. add_action('edited_category', 'no_category_base_refresh_rules');
  7. add_action('delete_category', 'no_category_base_refresh_rules');
  8. function no_category_base_refresh_rules() {
  9.     global $wp_rewrite;
  10.     $wp_rewrite -> flush_rules();
  11. }
  12. // register_deactivation_hook(__FILE__, 'no_category_base_deactivate');   
  13. // function no_category_base_deactivate() {   
  14. //  remove_filter('category_rewrite_rules', 'no_category_base_rewrite_rules');   
  15. //  // We don't want to insert our custom rules again   
  16. //  no_category_base_refresh_rules();   
  17. // }   
  18. // Remove category base   
  19. add_action('init', 'no_category_base_permastruct');
  20. function no_category_base_permastruct() {
  21.     global $wp_rewrite$wp_version;
  22.     if (version_compare($wp_version, '3.4', '<')) {
  23.         // For pre-3.4 support   
  24.         $wp_rewrite -> extra_permastructs['category'][0] = '%category%';
  25.     } else {
  26.         $wp_rewrite -> extra_permastructs['category']['struct'] = '%category%';
  27.     }
  28. }
  29. // Add our custom category rewrite rules   
  30. add_filter('category_rewrite_rules', 'no_category_base_rewrite_rules');
  31. function no_category_base_rewrite_rules($category_rewrite) {
  32.     //var_dump($category_rewrite); // For Debugging   
  33.     $category_rewrite = array();
  34.     $categories = get_categories(array('hide_empty' => false));
  35.     foreach ($categories as $category) {
  36.         $category_nicename = $category -> slug;
  37.         if ($category -> parent == $category -> cat_ID)// recursive recursion   
  38.             $category -> parent = 0;
  39.         elseif ($category -> parent != 0)
  40.             $category_nicename = get_category_parents($category -> parent, false, '/', true) . $category_nicename;
  41.         $category_rewrite['(' . $category_nicename . ')/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$'] = 'index.php?category_name=$matches[1]&feed=$matches[2]';
  42.         $category_rewrite['(' . $category_nicename . ')/page/?([0-9]{1,})/?$'] = 'index.php?category_name=$matches[1]&paged=$matches[2]';
  43.         $category_rewrite['(' . $category_nicename . ')/?$'] = 'index.php?category_name=$matches[1]';
  44.     }
  45.     // Redirect support from Old Category Base   
  46.     global $wp_rewrite;
  47.     $old_category_base = get_option('category_base') ? get_option('category_base') : 'category';
  48.     $old_category_base = trim($old_category_base, '/');
  49.     $category_rewrite[$old_category_base . '/(.*)$'] = 'index.php?category_redirect=$matches[1]';
  50.     //var_dump($category_rewrite); // For Debugging   
  51.     return $category_rewrite;
  52. }
  53. // Add 'category_redirect' query variable   
  54. add_filter('query_vars', 'no_category_base_query_vars');
  55. function no_category_base_query_vars($public_query_vars) {
  56.     $public_query_vars[] = 'category_redirect';
  57.     return $public_query_vars;
  58. }
  59. // Redirect if 'category_redirect' is set   
  60. add_filter('request', 'no_category_base_request');
  61. function no_category_base_request($query_vars) {
  62.     //print_r($query_vars); // For Debugging   
  63.     if (isset($query_vars['category_redirect'])) {
  64.         $catlink = trailingslashit(get_option('home')) . user_trailingslashit($query_vars['category_redirect'], 'category');
  65.         status_header(301);
  66.         header("Location: $catlink");
  67.         exit();
  68.     }
  69.     return $query_vars;
  70. }

三、修改函数

1、找到你Wordpress博客wp-includes文件夹下的category-template.php。

2、打开此文件,搜索(get_category_link()函数里)的以下代码:

$catlink = $wp_rewrite->get_category_permastruct();

在其后,另起一行加入:

$catlink = str_replace('/category' , '' , $catlink);
代码作用是,使用字符串替换函数,把获取分类链接函数的分类链接里的/category替换掉。达到去掉分类链接前缀/category的目的。

3、保存上传到服务器即可。

四、修改固定链接,去掉分类链接前缀category

去除WordPress网站链接中category的四种方法

登录你的Wordpress后台,打开固定链接/永久链接设置项。在“可选设置”里的“分类地址前缀”里输入半角字符: “.”;保存即可去掉分类前缀category。

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

缺点:原链接无法打开,出现404错误。被搜索引擎收录良好,或分类链接有较多外链链入的博客,可要万分小心了。不要因为操作简单、省时省力而损失了大量外链及权重。

开启重写后,这样设置会导致分类和标签下找不到对应文章,所以最好还是只将其缩短。

 

以上四类方式均可以有效去除url中的“category”,各位站长可根据自己的实际情况来选择去除方式。若还有其他有效方式,请在评论区留言交流。

更多文章,请访问:mus18.com

目录
相关文章
|
1月前
|
安全
SiteGround如何设置WordPress网站自动更新
iteGround Autoupdate功能会自动帮我们更新在他们这里托管的所有WordPress网站,这样做是为了保证网站安全,并且让它们一直保持最新状态。他们会根据我们选择的设置自动更新不同版本的WordPress,包括主要版本和次要版本。在每次自动更新之前,他们都会为我们的网站做一个完整的备份,这样如果有什么问题,我们可以轻松地恢复到之前的状态。在本文中,我们将介绍如何在SiteGround中设置WordPress网站自动更新。
36 0
SiteGround如何设置WordPress网站自动更新
|
3月前
WordPress网站更换域名后如何重新激活elementor
本文讲解WordPress网站更换域名后如何重新激活elementor。首先你需要在WordPress后台elementor下点击Disconnect断开原elementor连接,然后登录elementor官网,在后台解除原网站授权;接着在WordPress后台重新连接并激活elementor。
64 2
WordPress网站更换域名后如何重新激活elementor
|
3月前
给WordPress网站增加一个带时间的led广告牌
给WordPress网站增加一个带时间的led广告牌
31 3
|
1月前
|
关系型数据库 MySQL Apache
怎么在树莓派上搭建WordPress博客网站,并发布到外网可访问?
怎么在树莓派上搭建WordPress博客网站,并发布到外网可访问?
|
3月前
|
域名解析 弹性计算 数据安全/隐私保护
阿里云ECS免费搭建WordPress个人博客网站
阿里云ECS免费搭建WordPress个人博客网站
452 2
阿里云ECS免费搭建WordPress个人博客网站
|
2月前
|
存储 XML 前端开发
信息收集 -- WordPress网站
信息收集 -- WordPress网站
25 0
|
3月前
|
数据库 数据安全/隐私保护 SEO
如何像我这样创建一个酷炫且能赚钱的网站(使用宝塔安装WordPress搭建子比主题)
如何像我这样创建一个酷炫且能赚钱的网站(使用宝塔安装WordPress搭建子比主题)
45 0
如何像我这样创建一个酷炫且能赚钱的网站(使用宝塔安装WordPress搭建子比主题)
|
4月前
|
存储 缓存 前端开发
如何修复运行缓慢的 WordPress 网站?
如何修复运行缓慢的 WordPress 网站?
44 1
|
4月前
|
前端开发
如何在你的 wordpress 网站中添加搜索框
如何在你的 wordpress 网站中添加搜索框
54 2
|
4月前
|
存储 安全 关系型数据库
如何让你的 WordPress 网站更安全
如何让你的 WordPress 网站更安全
58 0