去除WordPress网站链接中“category”的四种方法
作为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链接也会跳转到新链接上。
- /*
- *WordPress去除category
- */
- 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;
- }
三、修改函数
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”的四种方法相关推荐
- WordPress获取当前分类ID的四种方法
WordPress获取当前分类ID的四种方法 时间: 2015-01-05 所属栏目: Wordpress教程 作者: WP管理员之家 关键词: wordpress,分类ID 关注热度: 4,346 ...
- 学习笔记---将Asp.Net网站发布到IIS的四种方法及注意事项
将Asp.Net网站发布到IIS的四种方法及注意事项: 不管是那种发布方法, 第一件事情是让IIS能够支持asp.net程序, 默认IIS是不开器asp.net网站程序的支持的.在IIS中的" ...
- 让一个图片在div中居中(四种方法)
第一种方法: <div class="title"><div class="flag"></div><div clas ...
- wordpress目录不分层级方法!去掉WordPress目录链接中category?目录在根目录
刚刚接触Wordpress的小伙伴们可能被搞的无从下手,比如说添加目录后然后把目录添加到导航菜单链接会出/category/你的目录url.这样很不利于SEO那么怎么才能处理掉category这一层目 ...
- 在MySql中,这四种方法可以避免重复插入数据!
前言 MySql 在存在主键冲突或唯一键冲突的情况下,根据插入方式,一般有以下四种插入方式避免错误. insert ignore. replace into insert on duplicate k ...
- 实践 | 在MySql中,这四种方法可以避免重复插入数据!
前言 MySql 在存在主键冲突或唯一键冲突的情况下,根据插入方式,一般有以下四种插入方式避免错误. insert ignore. replace into insert on duplicate k ...
- Python中去除字符串中空格的四种方法
一.需求说明 业务需要对Pyhon中的一些字符串内容去除空格,方便后续处理. 二.思路分析 去除空格内容,可以使用去除字符串空格的函数或者直接使用替换函数即可. 三.实现方法 3.1.去除字符串头尾的 ...
- 【Python教程】删除字符串中字符的四种方法
一.删除字符串两端的一种或多种字符 #strip().lstrip().rstrip()方法:(默认删除空格符) A.list.strip(字符):删除字符串两端的一种或多种字符: 例:删除字符串s两 ...
- JAVA如何在线程中加锁(四种方法)
JAVA多线程锁 线程的生命周期 总共六种状态,可归结为五种,线程的最终是死亡,阻塞不是最终状态,只是一个临时状态.只有调用了start方法,线程才进入就绪阶段. //新生 NEW, //运行 ...
最新文章
- Nginx初体验(一):nginx介绍
- openwrt 3g模块上网
- HTTP的短连接、长连接、管道连接流水线
- 5.1.1 电商离线数仓(数仓需求分析、日志采集、表数据加载、json数据处理、 Datax 数据导出、Tez高仿日启动测试)
- div水平(横向)/垂直排列
- 橙狮Scratch编程
- 星号下三角形python答案_Python利用for循环打印星号三角形的案例
- Java 2 实用教程学习
- 因果推理(八):工具变量(Intrusmental Variables)
- 管理信息系统基础知识点
- 柔性印刷电路板(PCB)的设计方法、类型等详细解析
- java电商网站源码带前后台
- ADDS:设置域间信任 SID Filter Quarantining
- linux unix 可视化界面,Linux/UNIX远程调用图形化界面的一种方法
- linux硬件性能,Linux运维知识:Linux下的硬件性能测试工具汇总
- 使用ASP.NET做android的后台服务
- 太酷了!滴滴的这个黑科技,面世了!!!
- python怎么做软件开发有前途吗_Python程序员就业行情以及前景分析
- 大一计算机组装实验报告,计算机硬件系统及组装【大一计算机实验报告】
- 计算机音量控制图标是在桌面的,在计算机桌面的任务栏中的音量控制图标不见了...