Several ways to remove category in WordPress
WordPress 默认URL中自带 category 目录,因此就会导致网页url中多出一层category目录,这样增加了url的深度,也影响url美观性,芃越使用WordPress建站会先去除url中的category,那么WordPress如何去除url中的category?通常用到的方法都是插件和代码,此类问题搜索引擎中有很多答案,芃越也是WordPress使用者,在此总结了WordPress去除category的几种方法。
网页url对seo的影响
搜索引擎程序抓取的原则是深度优先和广度优先,如果url中多出一层/category/目录也就是意味着,网站中所有的网页都更深了一层;而去除/category/后,网站中的页面的深度就少了一层,蜘蛛更容易访问到,所以要去除 category。这些年搜索引擎也在不断发展进化,只要你的网页路径不是四五层那种深度,一般抓取都没问题,但是细节性的东西能做我们还是尽量给做了,网站优化就是这些细节一点点积累起来,由量变到质变的。下面我们来说说WordPress去除category的几种方法。
Several ways to remove category in WordPress
WordPress后台去除
wordpress 后台>>设置>>固定链接>>可选>>分类目录前缀的空格里,输入英文状态的".",保存后即可轻实现WordPress去除url中的category。
这样做得弊端是原链接无法打开,出现404错误。如果被搜索引擎收录良好,或分类链接有较多外链链入的博客,容易造成大量死链,导致网页url发生改变,容易造成网站降权。

通过插件去除WordPress url 中的category
比较常用的 category 插件很多,最出名的 WP No Category Base 官方已经找不到了,还有一款现在用的蛮多的 no category base wpml 插件可以使用来去除 category。
插件功能简单,就是为了去除 /category/ 目录,安装后不需要任何设置就可以使用。该插件还把旧的分类链接自动 301 重定向到新链接地址。
这款插件的使用前提是你的 wordpress 博客已经有内容了,事后诸葛亮才要去除 category,这时候用插件是比较合适的。
插件会比较占用服务器的资源,大量的插件容易导致网站卡顿,芃越做seo的原则是能通过代码实现尽可能通过代码实现,插件能不用就不用。
代码去除WordPress url 中的category
将以下代码放入WordPress模板的function.php中,内容如下:
//去除分类标志代码 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)/?
将以上代码放入function.php中就可以去除WordPress url中的category了。
除此之外还有修改category文件的方法,这个是不建议使用的,每次升级都会覆盖掉文件。
去除WordPress url中的category芃越建议在网站上线之前就提前做好,如果是已经被搜索引擎收录的页面,再对页面url做更改,都会导致页面的url发生改变,如果是一定要改,去除代码后做好301.
提醒: 使用代码之后,网站可能会出现 404 页面,也即%post_id%.html(本站的固定链接)的伪静态失效了。解决办法很简单,登录后台-设置-固定链接设置页面,把固定链接格式改成别的,然后再改回自己常用的格式,保存一下就可以解决。
] = 'index.php?category_name=$matches[1]&feed=$matches[2]'; $category_rewrite['(' . $category_nicename . ')/page/?([0-9]{1,})/?
将以上代码放入function.php中就可以去除WordPress url中的category了。
除此之外还有修改category文件的方法,这个是不建议使用的,每次升级都会覆盖掉文件。
去除WordPress url中的category芃越建议在网站上线之前就提前做好,如果是已经被搜索引擎收录的页面,再对页面url做更改,都会导致页面的url发生改变,如果是一定要改,去除代码后做好301.
提醒: 使用代码之后,网站可能会出现 404 页面,也即%post_id%.html(本站的固定链接)的伪静态失效了。解决办法很简单,登录后台-设置-固定链接设置页面,把固定链接格式改成别的,然后再改回自己常用的格式,保存一下就可以解决。
] = 'index.php?category_name=$matches[1]&paged=$matches[2]'; $category_rewrite['(' . $category_nicename . ')/?
将以上代码放入function.php中就可以去除WordPress url中的category了。
除此之外还有修改category文件的方法,这个是不建议使用的,每次升级都会覆盖掉文件。
去除WordPress url中的category芃越建议在网站上线之前就提前做好,如果是已经被搜索引擎收录的页面,再对页面url做更改,都会导致页面的url发生改变,如果是一定要改,去除代码后做好301.
提醒: 使用代码之后,网站可能会出现 404 页面,也即%post_id%.html(本站的固定链接)的伪静态失效了。解决办法很简单,登录后台-设置-固定链接设置页面,把固定链接格式改成别的,然后再改回自己常用的格式,保存一下就可以解决。
] = '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 . '/(.*)
将以上代码放入function.php中就可以去除WordPress url中的category了。
除此之外还有修改category文件的方法,这个是不建议使用的,每次升级都会覆盖掉文件。
去除WordPress url中的category芃越建议在网站上线之前就提前做好,如果是已经被搜索引擎收录的页面,再对页面url做更改,都会导致页面的url发生改变,如果是一定要改,去除代码后做好301.
提醒: 使用代码之后,网站可能会出现 404 页面,也即%post_id%.html(本站的固定链接)的伪静态失效了。解决办法很简单,登录后台-设置-固定链接设置页面,把固定链接格式改成别的,然后再改回自己常用的格式,保存一下就可以解决。
] = '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; }
将以上代码放入function.php中就可以去除WordPress url中的category了。
除此之外还有修改category文件的方法,这个是不建议使用的,每次升级都会覆盖掉文件。
去除WordPress url中的category芃越建议在网站上线之前就提前做好,如果是已经被搜索引擎收录的页面,再对页面url做更改,都会导致页面的url发生改变,如果是一定要改,去除代码后做好301.
提醒: 使用代码之后,网站可能会出现 404 页面,也即%post_id%.html(本站的固定链接)的伪静态失效了。解决办法很简单,登录后台-设置-固定链接设置页面,把固定链接格式改成别的,然后再改回自己常用的格式,保存一下就可以解决。
好了关于Several ways to remove category in WordPress的分享就到这里了,更多资讯请关注Peng Yue, right?!
【免责声明】本站发布的信息大都来源于互联网,不代表本站立场;
如若转载请注明出处:https://pengy8.com/en/wordpress-remove-category/
如若侵犯了您的权益,投诉请联系我们,收到后立即处理。