插件/非插件去掉WordPress分类(/category/)和标签(/tag/)前缀

  • 4
  • 10,822人读过
  • A+
所属分类:WordPress
前言

今天记录一下插件或者非插件实现WordPress去掉链接中的/category/和/tag/。

首先树懒先生推荐使用WP No Base Permalink插件的方法,因为即可以去除/category/和/tag/又解决了301的问题,对于老站点来说非常的友好,而且控制很方便。不仅仅有去除的功能还可以随心所欲的添加链接前缀

如果需要安装,和普通插件一样在WordPress的插件-安装插件中搜索WP No Base Permalink即可,或者直接去WordPress官网下载此款插件:传送门。之后通过FTP上传文件夹到网站根目录-wp-content-plugins即可。

插件/非插件去掉WordPress分类(/category/)和标签(/tag/)前缀

但是树懒先生很不建议去除标签链接中的/tag/,假设树懒先生的博客其中一个目录以WordPress作为英文别名,在WordPress分类目录下的文章很多都会有WordPress关键词作为标签,那么点击标签跳转https://www.mecrr.com/wordpress/和点击分类目录跳转https://www.mecrr.com/wordpress/得到的结果是不一样的。不论是从搜索引擎角度来讲还是用户体验都是不友好的,所以只推荐去除分类目录的/category/,即只需勾选插件的“Remove Category Base of the permalinks”选项。

插件/非插件去掉WordPress分类(/category/)和标签(/tag/)前缀

对于有强迫症的站长来说直接在Function中添加代码实现功能是最好不过的了,那么就直接复制一下代码到主题的Function.php中。

  1. //来自WP No category Base插件,但是树懒先生发现很久没更新已经不能下载了
  2. add_action( 'load-themes.php',  'no_category_base_refresh_rules');
  3. add_action('created_category', 'no_category_base_refresh_rules');
  4. add_action('edited_category', 'no_category_base_refresh_rules');
  5. add_action('delete_category', 'no_category_base_refresh_rules');
  6. function no_category_base_refresh_rules() {
  7.     global $wp_rewrite;
  8.     $wp_rewrite -> flush_rules();
  9. }
  10. add_action('init', 'no_category_base_permastruct');
  11. function no_category_base_permastruct() {
  12.     global $wp_rewrite$wp_version;
  13.     if (version_compare($wp_version, '3.4', '<')) {
  14.         $wp_rewrite -> extra_permastructs['category'][0] = '%category%';
  15.     } else {
  16.         $wp_rewrite -> extra_permastructs['category']['struct'] = '%category%';
  17.     }
  18. }
  19. add_filter('category_rewrite_rules', 'no_category_base_rewrite_rules');
  20. function no_category_base_rewrite_rules($category_rewrite) {
  21.     $category_rewrite = array();
  22.     $categories = get_categories(array('hide_empty' => false));
  23.     foreach ($categories as $category) {
  24.         $category_nicename = $category -> slug;
  25.         if ($category -> parent == $category -> cat_ID)
  26.             $category -> parent = 0;
  27.         elseif ($category -> parent != 0)
  28.             $category_nicename = get_category_parents($category -> parent, false, '/', true) . $category_nicename;
  29.         $category_rewrite['(' . $category_nicename . ')/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$'] = 'index.php?category_name=$matches[1]&feed=$matches[2]';
  30.         $category_rewrite['(' . $category_nicename . ')/page/?([0-9]{1,})/?$'] = 'index.php?category_name=$matches[1]&paged=$matches[2]';
  31.         $category_rewrite['(' . $category_nicename . ')/?$'] = 'index.php?category_name=$matches[1]';
  32.     }
  33.     global $wp_rewrite;
  34.     $old_category_base = get_option('category_base') ? get_option('category_base') : 'category';
  35.     $old_category_base = trim($old_category_base, '/');
  36.     $category_rewrite[$old_category_base . '/(.*)$'] = 'index.php?category_redirect=$matches[1]';
  37.     return $category_rewrite;
  38. }
  39. add_filter('query_vars', 'no_category_base_query_vars');
  40. function no_category_base_query_vars($public_query_vars) {
  41.     $public_query_vars[] = 'category_redirect';
  42.     return $public_query_vars;
  43. }
  44. add_filter('request', 'no_category_base_request');
  45. function no_category_base_request($query_vars) {
  46.     if (isset($query_vars['category_redirect'])) {
  47.         $catlink = trailingslashit(get_option('home')) . user_trailingslashit($query_vars['category_redirect'], 'category');
  48.         status_header(301);
  49.         header("Location: $catlink");
  50.         exit();
  51.     }
  52.     return $query_vars;
  53. }

来自树懒先生的提醒:更改WordPress的链接可能导致部分文章分类或者是全部处于404状态,一般需要重新保存一下WordPress的“固定连接”,如果还是出问题那么可能需要检查一下Nginx的伪静态规则是否正确了,不过一般是不会出现问题的。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:4   其中:访客  2   博主  2

    • 搜程快排精灵 搜程快排精灵 1

      不错的插件,值得支持一下的了

      • 博客之家 博客之家 1

        我们已收录贵站,欢迎回访,谢谢支持!
        收录页短网址:https://eps.gs/drP