加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

去除WordPress固定链接中category路径方法

发布时间:2022-06-23 14:07:51 所属栏目:教程 来源:互联网
导读:在WordPress固定链接中,如果是分类的话会有一个默认的category路径了,从seo角度来讲没有category路径比有category路径要好,下面我们就来给各位介绍去除WordPress固定链接中category路径方法,大家一起来看看. 解决方法网上也有提供,有使用插件,有使用伪静态的
  在WordPress固定链接中,如果是分类的话会有一个默认的category路径了,从seo角度来讲没有category路径比有category路径要好,下面我们就来给各位介绍去除WordPress固定链接中category路径方法,大家一起来看看.
 
  解决方法网上也有提供,有使用插件,有使用伪静态的,下面小峰来说一下,能处理的几种方法.
 
  注:以下部分代码来源于网上。
 
  方法一:在functions.php文件中添加如下代码,然后到wp后台-设置-固定链接-保存一次即可生效.
 
  /**
   * 去除固定链接中的/category/路径,记得在后台保存一次固定链接
   */
  add_action('init', 'inlo_no_category');
  function inlo_no_category() {
   global $wp_rewrite;
   $wp_rewrite -> extra_permastructs['category']['struct'] = '%category%';
  } //phpfensi.com
  方法二:来源插件WP No Category Base上的代码,也是放到functions.php里面,然后到wp后台-设置-固定链接-保存一次即可生效.
 
  /**
   * 去除固定链接中的/category/路径,添加后在后台保存一次固定链接
   * 基于 WP No Category Base 插件
   */
  
  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;
  }
  方法三:基于伪静态,编写.htaccess的301重定向规则,使用与主机系统为linux,将带有/category/的链接重定向至没有它的链接.
 
  RewriteEngine On
  RewriteBase /
  RewriteRule ^category/(.+)$ http://www.phpfensi.com /$1 [R=301,L]
  将上面峰尚博客的网址替换为你的网址.

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!