WordPress去除分类目录“category”路径的三种方法

不少折腾WordPress的朋友都希望去掉分类链接中默认就添加的 /category/ 目录标志,网上很多这方面的教程,据子凡目前所知,应该有三种方法可以去除分类category标志,这里子凡依然把所有的方法列举出来,但是子凡还是比较推荐使用以下推荐的代码或插件来实现效果,其它方法虽然可以达到效果,但都是不太完美的。泪雪建站和泪雪博客等网站目前也都是选择去掉了/category/目录,使用的正是方法二和方法三。

方法一(不推荐使用)

进入 WordPress后台 -> 设置 -> 固定链接

如上图所示,就是在将“分类目录前缀”项设置为“.”,这种方法也可以去除category,虽然设置简单,但是效果不理想,容易出现错误。

方法二(推荐)

这里子凡推荐一个比较完善的插件(WP No Category Base)来去除category。

WP No Category Base插件功能简单,就是仅仅为了去除 /category/ 目录标志,直接安装,不需要任何设置就可以使用。

WP No Category Base 插件下载

官方下载 | 百度云网盘备用下载(v1.1.1) | 推荐后台直接搜索安装

方法三(代码版,需要折腾代码)

其实第三种方法适合于喜欢折腾的朋友,特别是不喜欢用插件的朋友,这里的代码其实就是WP No Category Base插件,直接将一下插件代码复制到当前主题Functions.php中即可:

/*
 Plugin Name: WP No Category Base
 Plugin URI: http://blinger.org/wordpress-plugins/no-category-base/
 Description: Removes '/category' from your category permalinks.
 Version: 1.1.1
 Author: iDope
 Author URI: http://efextra.com/
 */
 
// Refresh rules on activation/deactivation/category changes
register_activation_hook(__FILE__, '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;
}
 
// For Debugging
//add_filter('rewrite_rules_array', 'no_category_base_rewrite_rules_array');
//function no_category_base_rewrite_rules_array($category_rewrite) {
//	var_dump($category_rewrite); // For Debugging
//}
 
// 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;
}

泪雪提示:如果你的是新站,可以考虑去除/category/目录;如果你的是老站(也就是说搜索引擎已经收录了分类目录),使用这个插件后,注意做一下分类链接的301跳转。

本文来自leiue,经授权后发布,本文观点不代表临城人立场,转载请联系原作者。

(0)
上一篇 2018年8月9日 01:09
下一篇 2018年8月9日 21:31

相关推荐

  • 魅族16新旗舰首发评测:15年来性能、拍照巅峰

    一、前言:巨匠黄章归来重锻梦想机 魅族16th为首部“全力之作”  回顾魅族过往的风雨十五载,常常会感慨于这家源地远离国产手机主战场,沾染着创始人佛系性格的珠海厂商能够不断以小搏大…

    2018年8月9日 国内
    8.4K
  • 拼多多9.9元“蓝月亮”洗衣液与正品蓝月亮实测对比

    话说,我的室友是电商平台“拼多多”的忠粉!前两天,当我准备借他的洗衣液用的时候,发现了异样。咦!你这“蓝月亮”怎么和我之前买的蓝月亮有点不一样? 他告诉我,这不是蓝月亮,只是外观上…

    2018年8月11日
    2.5K
  • 手机天猫专享日 天猫红包雨来了

    如今天猫的红包活动越来越少了,红包金额也越来越少了,好多宝妈都不想参与了,今天要给大家分享的红包活动是天猫手机专享日的红包雨活动,目前来看,红包数额都比较小,有闲时间的亲们可以试试…

    2018年8月11日
    1.4K
  • 爱奇艺会员卡仅189元2年VIP黄金会员卡 低至5折平均7.8元/月

    爱奇艺2年会员卡首次来袭!双11抢先购,没有定金付尾款抢名额规则简单,没有套路超值优惠,直接安排! 爱奇艺VIP会员卡 一波超劲爆福利,就等你来抢! 原价378元黄金会员2年卡 现…

    国内 2019年11月5日
    3.6K
  • 张若昀澄清爱尔兰不能离婚

    6日,唐艺昕顺利产女后出院被拍,张若昀贴心在医院门口派发红包,众位网友纷纷送上祝福,而距离去年6月的爱尔兰那场盛大的婚礼,还未满一年。 去年6月,唐艺昕与张若昀远赴爱尔兰举办婚礼,…

    2020年5月7日
    5.0K
  • 乐视宣布实行每周四天半工作制,周三弹性工作半天

    1 月 3 日消息,乐视官方微博 @letv 今日向外界公布了一封内部信,其中对乐视 2022 的一些业务做了总结,并提到乐视将执行每周四天半工作制,每周三弹性工作半天。早在 20…

    国内 2023年1月3日
    754
  • 2018年经典文案汇总 必看

    不知不觉,2018已经过去一半了,你收获了什么? 有人收获了“谢顶”,有人收获了“油腻”,而我就比较厉害了,收获了一大堆刷屏级的,别人写的好文案。 看看别人,是怎么写好文案的。 ▼…

    2018年8月9日
    1.6K
  • 《开学第一课》“观后感”提交二维码/地址

    《开学第一课》“观后感”提交二维码如下图,请注意要用微信扫一扫识别! 不方便扫描的也可以直接关注微信公众号:a860362868,回复“开学第一课”即可一步获取打开方式。 点击“观…

    2018年9月2日
    2.6K
  • 《开学第一课》“无壳蛋生鸡”游戏二维码 “无壳蛋生鸡”游戏地址

    《开学第一课》“无壳蛋生鸡”游戏二维码如下图,请注意要用微信扫一扫识别! 不方便扫描的也可以直接关注微信公众号:a860362868,回复“小鸡”即可一步获取打开方式。 点击无壳蛋…

    2018年9月2日
    2.8K
  • 石家庄读书的好地方:石家庄最美书店汇总

    石家庄最美图书馆汇总: 一.春华书城 • 城市书房二.秋林书城三.尧书吧四.呈明书店五.西西弗书店六.东华书店七.啡页书咖八.文汇栖居 • 席殊书店九.万科 • 三联公益大书房十….

    2018年8月13日
    13.3K