作为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'); functionno_category_base_refresh_rules(){global$wp_rewrite;$wp_rewrite->flush_rules();} //register_deactivation_hook(__FILE__,'no_category_base_deactivate');//functionno_category_base_deactivate(){//remove_filter('category_rewrite_rules','no_category_base_rewrite_rules');////Wedon'twanttoinsertourcustomrulesagain//no_category_base_refresh_rules();//} //Removecategorybaseadd_action('init','no_category_base_permastruct'); functionno_category_base_permastruct(){global$wp_rewrite,$wp_version;if(version_compare($wp_version,'3.4','<')){//Forpre-3.4support $wp_rewrite->extra_permastructs['category'][0]='%category%';}else{$wp_rewrite->extra_permastructs['category']['struct']='%category%';}} //Addourcustomcategoryrewriterulesadd_filter('category_rewrite_rules','no_category_base_rewrite_rules'); functionno_category_base_rewrite_rules($category_rewrite){//var_dump($category_rewrite);//ForDebugging $category_rewrite=array();$categories=get_categories(array('hide_empty'=>false));foreach($categoriesas$category){$category_nicename=$category->slug;if($category->parent==$category->cat_ID)//recursiverecursion $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]';}//RedirectsupportfromOldCategoryBase 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);//ForDebugging return$category_rewrite;} //Add'category_redirect'queryvariableadd_filter('query_vars','no_category_base_query_vars'); functionno_category_base_query_vars($public_query_vars){$public_query_vars[]='category_redirect';return$public_query_vars;} //Redirectif'category_redirect'issetadd_filter('request','no_category_base_request'); functionno_category_base_request($query_vars){//print_r($query_vars);//ForDebugging 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”,各位站长可根据自己的实际情况来选择去除方式。若还有其他有效方式,请在评论区留言交流。
更多文章,请访问: