php 去掉前缀,WordPress 去除 category 前缀的三种方法

本文总结了三种方法去除WordPress分类URL中的'category'。首先介绍了使用插件的方式,但指出可能导致rewrite规则臃肿、影响速度。其次,推荐设置分类目录前缀,在WordPress后台简单调整即可实现。最后,通过添加PHP代码利用页面rewrite规则,当URL匹配到分类slug时,将pagename替换为category_name,从而达到目的。
摘要由CSDN通过智能技术生成

这是个老生常谈的问题了,网上有一大堆的解决方法,这里进行一个总结,可分为三种方法:

一、使用插件

网上有很多相关的 WordPress 插件,都可以解决这个问题,不过大部分插件都是把所有的分类都写入 WordPress 的 rewrite 规则,这样会造成 rewrite 规则会非常臃肿,反而会使得 WordPress 变慢。所以,这个方法不是很推荐。

二、设置分类目录前缀

另外 WordPress 还有一个非常方便的方法,可以说是最简化去掉分类目录 URL 中的 category。只需要在 WordPress 后台,点击「设置」菜单下的「固定链接」子菜单,将「分类目录前缀」设置为 . 就可以:

三、写 PHP 语句

如果仔细观察一下去掉 category 的分类目录 url:

https://www.hack520.com/wordpress/,

是不是和 WordPress 的页面规则是一样的,比如开心技术乐园微技术页面:

https://www.hack520.com/microtech/,

那么我们可以使用页面的 rewrite 规则来处理。

当 WordPress 进入页面 rewrite 规则的时候,我们判断一下,当前的 pagename 是不是某个分类的 slug,如果是,就把当前的 query_var 中的 pagename 换成 category_name,这样就可以实现了。

add_filter('request', function($query_vars) {

if(!isset($_GET['page_id']) && !isset($_GET['pagename']) && !empty($query_vars['pagename'])){

$pagename= $query_vars['pagename'];

$categories= get_categories(['hide_empty'=>false]);

$categories= wp_list_pluck($categories, 'slug');

if(in_array($pagename, $categories)){

$query_vars['category_name']= $query_vars['pagename'];

unset($query_vars['pagename']);

}

}

return $query_vars;

});

add_filter('pre_term_link', function($term_link, $term){

if($term->taxonomy == 'category'){

return '%category%';

}

return $term_link;

}, 10, 2);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值