去除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

目录
相关文章
|
6天前
【wordpress教程】wordpress博客网站添加非法关键词拦截
有的网站经常被恶意搜索,站长们不胜其烦。那我们如何屏蔽恶意搜索关键词呢?下面就随小编一起来解决这个问题吧。
15 1
|
3天前
|
弹性计算 关系型数据库 MySQL
使用资源编排 ROS 轻松部署单点网站——以 WordPress 为例
WordPress 是流行的开源CMS,阿里云的ROS(Resource Orchestration Service)提供模板化部署服务,简化云上环境如VPC、ECS、MySQL的创建。用户可通过ROS控制台选择模板一键部署WordPress,配置包括实例区、类型、系统盘及密码等参数。ROS模板定义了资源、参数和输出,自动处理依赖关系,实现云资源和应用的自动化部署。通过ROS,用户可以高效管理和更新整个资源栈,实现快速、可靠的云服务部署。
134 1
使用资源编排 ROS 轻松部署单点网站——以 WordPress 为例
|
1天前
|
弹性计算 负载均衡 关系型数据库
使用资源编排 ROS 轻松部署高可用架构网站——以 WordPress 为例
WordPress 是流行的开源 CMS,阿里云的资源编排服务 (ROS) 提供 IaC 功能,简化云上资源自动化部署,如创建 VPC、ECS、SLB、RDS 和弹性伸缩等。通过 ROS 模板(JSON/YAML),用户能快速部署高可用的 WordPress 环境,包括负载均衡、多可用区的 ECS 服务器集群、高可用 RDS 数据库等。模板定义了资源、参数和输出,用户在 ROS 控制台配置参数后一键部署。ROS 提升了部署效率,便于跨地域复制相同架构。
11 0
使用资源编排 ROS 轻松部署高可用架构网站——以 WordPress 为例
|
5天前
|
搜索推荐
wordpress网站添加一个临时维护功能
wordpress网站添加一个临时维护功能
13 3
|
17天前
|
弹性计算 自然语言处理 负载均衡
部署高可用WordPress网站
高可用服务是另外一个高频使用的场景,编写模板的流程和《部署单点WordPress网站》一样,但涉及的资源更多一些。本文以《部署高可用WordPress网站》为例,介绍高可用部署类的模板如何编写。
80709 6
|
9天前
|
Ubuntu 关系型数据库 MySQL
Ubuntu系统本地搭建WordPress网站并发布公网实现远程访问
Ubuntu系统本地搭建WordPress网站并发布公网实现远程访问
|
10天前
|
存储 前端开发 定位技术
关于如何用wordpress搭建付费资源网站,modown付费主题推荐
关于如何用wordpress搭建付费资源网站,modown付费主题推荐
关于如何用wordpress搭建付费资源网站,modown付费主题推荐
|
17天前
|
弹性计算 Java Linux
部署单点WordPress网站
在特定场景下编写模板的流程比较固定,本篇文章以《部署单点 WordPress 博客平台》为例,讲述如何完成一个部署成功率高、适配场景广的模板。大多数在 ECS 上部署应用的模板都可以参考此教程来编写。
27086 2
|
6天前
|
PHP 数据安全/隐私保护
WordPress网站添加输入密码才能访问功能
为你的网站添加 php 输入密码访问网站功能,这个功能其实很简单,在应用中的场景也是往往为内部或是个人使用的页面里面,在登陆的时候可以弹出一个窗口,做隐私保护,以下的代码可以满足大家的这个功能,同时可以在代码里自定义密码。同时只要在现有代码的上下添加好加密的代码就可以。记得要调整一下默认密码。不然会被入侵的。
13 0
|
2月前
|
域名解析 搜索推荐 网络安全
小白教程Cloudways搭建WordPress网站
得益于开源的CMS建站系统的兴起,如今搭建网站已经变得非常简单,即使是不懂编程的人也能轻松搭建自己的网站。本文将以最受欢迎的WordPress开源建站系统为例,向大家介绍如何使用CloudWays搭建WordPress网站。首先你需要注册域名(推荐NameSilo)和购买主机服务器(推荐Cloudways),然后注册Cloudways账号,接下来是创建Cloudways主机并安装WordPress、设置域名解析、域名绑定、安装SSL证书。完成这些操作后你就可以访问WordPress后台了,接着就是安装WordPress主题和WordPress插件
548 0