WordPress默认文章分类url路径是自带 /category/的,就算是一级分类从url来看也变成二级了。很多用户都希望去掉分类url中的/category/,包括我也是,所以我整理了这篇文章,作为学习记录,并且分享有同样需求的人。
去掉/category/在网站正式上线之前就要执行,否则网站收录以后,再去设置,会影响SEO。如果网站被收录后才想到要去掉/category/,建议使用插件并做好301重定向,避免影响SEO。
WordPress去掉URL中/category/的方法有很多种,各有利弊,适合不同需求的客户。
一、修改固定链接设置(不推荐使用)
登入wordpress网站后台,在仪表盘左侧菜单找到 设置→固定链接→分类前缀,在分类前缀设置里加一个英文的”.”(如下图)

点击“保存更改”按钮后,再从浏览器打开链接,看起来/category/确实去掉了。但打开xml会发现:URL中多了“/./”,搜索引擎收录的时候,抓取的也是带“/./”的URL。感觉有点一叶障目。

二、安装插件实现(推荐)
推荐插件:No Category Base(WPML)
此插件就是为了去除/category/而开发,无需设置,安装即生效。插件安装启用后,对原来url做了301重定向,消除了更改链接之后对seo产生的负面影响。
优点:
安装简单快捷
新站、老站都适用
无需更改代码
自动301跳转,防止原链接打不开影响seo,导致网站被降权。
其他插件还有 FV Top Level Categories

三、使用安装的seo插件设置(非常推荐)
我们网站正常都是需要安装seo插件的,主流seo插件都是自带去除category设置的。比如:Rank Math SEO、Yoast SEO。这样就不需要单独安装一个专门去除/category/的插件了,一个SEO插件就整合了。


四、添加代码
function remove_category( $string, $type ) {
if ( $type != 'single' && $type == 'category' && ( strpos( $string, 'category' ) !== false ) ){
$url_without_category = str_replace( "/category/", "/", $string );
return trailingslashit( $url_without_category );
}
return $string;
}
add_filter( 'user_trailingslashit', 'remove_category', 100, 2);
把以上代码粘贴到主题的function.php文件中(建议是子主题),也可以使用Code Snippets或者WPCode Pro插件。在WordPress网站开发过程中,像这种自定义代码插件经常会用到,这样是为了防止wordpress 更新时,旧文件被新文件覆盖掉,代码还要重新修改。

以上就是去掉URL中/category/的一些方法,这些方法是实测过的,网上分享的还有很多种,但有的代码比较老,在更高版本中并不适用。不懂代码的朋友,推荐使用插件设置。