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

相信很多站长和我一样!

网站搭建起来,我发现url中一直有一个“category”,我表示很不爽,想尽办法要把这个万恶的单词给去掉。结合网友们分享的教程和个人总结,去掉“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。

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

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

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

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

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

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

  1. WordPress获取当前分类ID的四种方法

    WordPress获取当前分类ID的四种方法 时间: 2015-01-05 所属栏目: Wordpress教程 作者: WP管理员之家 关键词: wordpress,分类ID 关注热度: 4,346 ...

  2. 学习笔记---将Asp.Net网站发布到IIS的四种方法及注意事项

    将Asp.Net网站发布到IIS的四种方法及注意事项: 不管是那种发布方法, 第一件事情是让IIS能够支持asp.net程序, 默认IIS是不开器asp.net网站程序的支持的.在IIS中的" ...

  3. 让一个图片在div中居中(四种方法)

    第一种方法: <div class="title"><div class="flag"></div><div clas ...

  4. wordpress目录不分层级方法!去掉WordPress目录链接中category?目录在根目录

    刚刚接触Wordpress的小伙伴们可能被搞的无从下手,比如说添加目录后然后把目录添加到导航菜单链接会出/category/你的目录url.这样很不利于SEO那么怎么才能处理掉category这一层目 ...

  5. 在MySql中,这四种方法可以避免重复插入数据!

    前言 MySql 在存在主键冲突或唯一键冲突的情况下,根据插入方式,一般有以下四种插入方式避免错误. insert ignore. replace into insert on duplicate k ...

  6. 实践 | 在MySql中,这四种方法可以避免重复插入数据!

    前言 MySql 在存在主键冲突或唯一键冲突的情况下,根据插入方式,一般有以下四种插入方式避免错误. insert ignore. replace into insert on duplicate k ...

  7. Python中去除字符串中空格的四种方法

    一.需求说明 业务需要对Pyhon中的一些字符串内容去除空格,方便后续处理. 二.思路分析 去除空格内容,可以使用去除字符串空格的函数或者直接使用替换函数即可. 三.实现方法 3.1.去除字符串头尾的 ...

  8. 【Python教程】删除字符串中字符的四种方法

    一.删除字符串两端的一种或多种字符 #strip().lstrip().rstrip()方法:(默认删除空格符) A.list.strip(字符):删除字符串两端的一种或多种字符: 例:删除字符串s两 ...

  9. JAVA如何在线程中加锁(四种方法)

    JAVA多线程锁 线程的生命周期 ​ 总共六种状态,可归结为五种,线程的最终是死亡,阻塞不是最终状态,只是一个临时状态.只有调用了start方法,线程才进入就绪阶段. //新生 ​ NEW, //运行 ...

最新文章

  1. Nginx初体验(一):nginx介绍
  2. openwrt 3g模块上网
  3. HTTP的短连接、长连接、管道连接流水线
  4. 5.1.1 电商离线数仓(数仓需求分析、日志采集、表数据加载、json数据处理、 Datax 数据导出、Tez高仿日启动测试)
  5. div水平(横向)/垂直排列
  6. 橙狮Scratch编程
  7. 星号下三角形python答案_Python利用for循环打印星号三角形的案例
  8. Java 2 实用教程学习
  9. 因果推理(八):工具变量(Intrusmental Variables)
  10. 管理信息系统基础知识点
  11. 柔性印刷电路板(PCB)的设计方法、类型等详细解析
  12. java电商网站源码带前后台
  13. ADDS:设置域间信任 SID Filter Quarantining
  14. linux unix 可视化界面,Linux/UNIX远程调用图形化界面的一种方法
  15. linux硬件性能,Linux运维知识:Linux下的硬件性能测试工具汇总
  16. 使用ASP.NET做android的后台服务
  17. 太酷了!滴滴的这个黑科技,面世了!!!
  18. python怎么做软件开发有前途吗_Python程序员就业行情以及前景分析
  19. 大一计算机组装实验报告,计算机硬件系统及组装【大一计算机实验报告】
  20. 计算机音量控制图标是在桌面的,在计算机桌面的任务栏中的音量控制图标不见了...

热门文章

  1. 处理linux centos7中登陆plsql后退格键上下键使用乱码问题
  2. 数据挖掘导论学习笔记 第五章 分类算法
  3. 青少年编程scratch一级-熟悉编程软件(答案及详解+线上题库答题)
  4. 线程状态转换图及其5种状态切换
  5. 不要迷恋哥,哥不只是传说(再【转】世界上最牛的程序员)
  6. 2、Gantt 入门 (vue3 + ts)
  7. android jpct ae教程,android OpenGL开发使用JPCT-AE引擎显示3D立方体
  8. 深入分析用 Manimgl 绘制参数方程的图像
  9. 2017滴滴校招编程
  10. 滴滴校招真题——末尾0的个数