铭创网络

  • 首页
  • 动态
  • 教程
    • 全部教程
    • 宝塔面板教程大全
    • WordPress 终极优化指南
  • 案例
  • 主题
  • 插件
个人运维记录与技巧分享,我们追求更稳定的主机运维环境
  1. 首页
  2. 案例
  3. 正文

如何去掉 WordPress 分类目录 url 链接中的 category

2019-01-29 141点热度 0人点赞 0条评论

这两天,站长的一个客户向站长请教关于移除分类目录中的 category 的方法,站长使用了最老的办法:修改固定链接!

打开 WP 后台 - 设置 - 固定链接,

WordPress 网站固定链接结构设置

然后在分类目录那一栏里写入英文半角的点,

WordPress 网站固定链接分类结构设置

但是,此时问题发生了:因为这样的设置需要网站是全新的,没有分类栏目和文章,这样才不会出错,但是此刻用户网站已有文章,这样的方法修改后,使用户的文章和分类栏目直接 404 报错了!

https://www.winrss.com/tutorial/wordpress-permalink.html

为此,站长只好使用了另一种方法:

我们直接将 WP No category Base 插件的主体代码插入到 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)/?$'] = '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;
 }

将以上代码,放入到主题的 function.php 文件中以后,重新保存固定链接设置!就这样,终于安全有效的移除了分类目录链接 url 中的 category 标签!

本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: url WordPress 分类 链接
最后更新:2019-01-29

铭创网络

铭创网络是一家有创意的互联网 + 营销服务公司,公司提供全方位的互联网服务,包括:网站建设、网站优化、网络营销、域名注册,虚拟主机、服务器租用,主机托管,企业邮箱、网站开发、WordPress主题、插件开发等,目前已有上百家客户与我们达成了合作伙伴关系。

点赞
< 上一篇
下一篇 >

文章评论

取消回复

铭创网络

铭创网络是一家有创意的互联网 + 营销服务公司,公司提供全方位的互联网服务,包括:网站建设、网站优化、网络营销、域名注册,虚拟主机、服务器租用,主机托管,企业邮箱、网站开发、WordPress主题、插件开发等,目前已有上百家客户与我们达成了合作伙伴关系。

推荐
最新 热点 随机
最新 热点 随机
PDF 转换动画书插件 PDF To FlipBook Extension V3.2 版 微软向Windows 10用户发布《世界河流》4K壁纸包 响应式图书翻页插件 Responsive FlipBook V2.4.5 版 一图看懂“微信支付分”到底有啥用?对你的生活有影响吗? Epic 典藏最后一款大作来了——《方舟:生存进化》 响应式幻灯片制作插件 Slider Revolution V6.2.11
强大的室内设计和建筑主题 Ratio V1.7时尚的 WooCommerce 主题 APRIL V4.4教育,学习管理系统主题 Edubin V5.0.8响应式幻灯片制作插件 Slider Revolution V6.2.5个人项目和简历展示主题 FLOX V1.0创意办公室主题 Codesk V1.0.0
优酷视频会员 5 折优惠,年卡限时半价仅 99 元 (原价198/去广告/超高清画质) DUX 主题 5.2 版本更新 - 新增产品中心模版、优化主题设置、强化主题针对插件的兼容性 响应式幻灯片制作插件 Slider Revolution V6.2.10 DUX 主题 4.0 版本大更新 - 新增优化 23 项功能,首页 SEO 标题、面包屑、打赏以及对 woocommerce 的支持 腾讯视频 VIP 推出限时五折活动 年卡 99 元 / 季卡 29 元 在线获取 Youtube 视频各尺寸高清封面图
标签聚合
网站 WordPress 服务器 幻灯片 娱乐 WordPress 插件 DUX WordPress 主题 DUX 主题 自适应 插件 主题

Copyright © 2020 赢聚网. All Rights Reserved.

THEME KRATOS MADE BY VTROIS

豫ICP备20007271号-1