全百科精品资源分享
免费优质资源下载平台

WordPress去掉分类链接category的四种方法

文章目录

使用WordPress建站的站长都会遇到,分类链接中都会无缘无故多出一个域名 /category/xx.htmlurl,这对于网站的SEO来说是非常不利的,同时对网站的链接结构也很不美观。网上有很多如何去掉category的教程,这里全百科网简单总结分享一下,并对比一下优缺点,仅供参考。

方法一

修改固定链接设置,去掉分类链接前缀category

登录你的Wordpress后台,打开固定链接/永久链接设置项。在“可选设置”里的“分类地址前缀”里输入半角字符: “.”;保存即可去掉分类前缀category。

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

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

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

方法二

使用插件No Category Base (WPML)

优点:安装简单,安装启用后自动生效。无论是初建成的博客,还是被搜索引擎收录良好的博客都可以使用。它对原来的分类地址做了301跳转,对SEO优化有好处,把降权风险降到最低,防止原链接打不开。用不着修改代码,升级没有顾虑。

不足:插件可能会造成服务器负担,但是微乎其微,不应该算缺点。

方法三

添加代码到functions.php文件

//作者:全百科网
//网站:http://www.quanbaike.com/
//去除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;
 }

优点:加入代码,性能影响忽略不计,适用于对代码稍熟悉的博客。

缺点:博客升级需要重新修改。

方法四

修改Wordpress函数,去掉分类前缀category

对于 wordpress 中的各类问题,几乎都能找到插件解决,这个问题也不例外。但是很大一部分 wper 患有严重的代码控,但凡修改代码可以达到的效果绝不用插件代替,即便后者更为简单。所以在这里介绍一个非插件的方法:

1、Wordpress3.2之前版本

在目录 wp-includes/category-template.php 文件中搜索:

$catlink = $wp_rewrite->get_category_permastruct();

在下面添加:

$catlink = str_replace('/category', "", $catlink);

保存即可。

2、Wordpress3.2版本

在目录 wp-includes/category-template.php 文件中搜索:

function get_category_link( $category )

在最后的

return $category;

之前加入

$category = str_replace('/category', "", $category);

优点:仅加入一段代码,性能影响忽略不计。适用于对代码稍熟悉的博客。

缺点:修改代码,博客升级还要修改。且原地址仍可以访问。或会造成谷歌网站管理员工具里提到的,重复的标题。

Download WordPress Themes
Download Premium WordPress Themes Free
Download Premium WordPress Themes Free
Download Best WordPress Themes Free Download
lynda course free download
download micromax firmware
Download Nulled WordPress Themes
download udemy paid course for free

本文由全百科网分享提供,分享更多精品资源,帮助你我共同成长。

赞(0) 打赏
本站内容均来自网络收集,转载内容不代表本网站的观点及意见,仅供用户参考和借鉴。如对稿件内容及版权问题有疑议,请及时联系全百科官方邮箱: smtsg@foxmail.com全百科网 » WordPress去掉分类链接category的四种方法
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏